このための適切な正規表現を一生理解することはできません。
私が探しているのは、Linuxファイルのパーミッションの有効な数値表現に一致する正規表現です(たとえば、all-read-noneの場合は740、all-all-allの場合は777)。これまで私は以下を試しました:
strtotest=740
echo "$strtotest" | grep -q "[(0|1|2|3|4|5|7){3}]"
if [ $? -eq 0 ]; then
echo "found it"
fi
上記の問題は、他の文字に関係なく、正規表現がその中1-5
または中のすべてに一致することです。7
たとえば、strtotest
に変更された709
場合、条件はtrueになります。私も試しましたが、うまくいきません[0|1|2|3|4|5|7{3}]
。[(0|1|2|3|4|5|7{3})]
私が使用している正規表現は間違っていますか、それとも対処しなければならない何かが欠けていgrep
ますか?