私のUbuntuコンピュータで以下のコードを実行しようとしましたが、「条件式の構文エラー」と「'0-9'付近の構文エラー」が引き続き表示されます。理由を教えてもらえますか?
while ! [[ $num =~ ^[ 0-9 ] +$ && $num = 0 ]] ; do
答え1
whileを大文字で書いてはいけませんが、この質問を入力するときにだけそのようなことが発生すると思います。それ以外の場合は他のエラーが発生します。
問題は正規表現が間違っているためです。
[ 0-9 ]
空白があってはなりません[0-9]
。ただし、一度修正すると、+$
それらの間のスペースもエスケープする必要があるため、他のエラーが発生します。
while ! [[ $num =~ ^[0-9]\ +$ && $num = 0 ]] ; do
一般に、拡張テストで使用するために、これらのパターンを変数に保存することをお勧めします。
pattern='^[0-9] +$'
while ! [[ $num =~ $pattern && $num -eq 0 ]]; do