Unixシェルスクリプトに "]"エラーがありません。

Unixシェルスクリプトに "]"エラーがありません。

両方の変数が空であることを確認する小さなスクリプトを実行しようとしています。正しい出力が得られましたが、閉じカッコが欠落しているというエラーも表示されます。二重かっことかっこを使ってみましたが、うまくいきませんでした。

var=""
non="hi"

 if ([ -z "$var"] && [ -z "$non"])
then
    echo "both empty"

else
    echo "has data"
fi

出力:

line 6: [: missing `]'
has data

答え1

"$non" と ] の間にはスペースが必要で、 () はあってはなりません。

if [ -z "$var" ] && [ -z "$non" ]

答え2

Andy Daltonが答えで述べたように、間にスペースを入れる必要があります。"$FEI"と右角かっこ]このように:

[ -z "$non" ]

なぜこれを行うべきかについていくつかの動機を追加したかったのです。 Bashでは、角括弧はコマンドです。男性[見て、ここのマニュアルがあるテストコマンド)、したがってどのコマンドを呼び出しているのかを知るには、bashのスペースが必要です。

関連情報