BashでIf / elseステートメントを使用しようとしています。どちらが正しい構文か混乱しています。
if [ "$NUMBER_dcn" -gt $NO ]
then
dir_dcn='/mnt/md0/capture'
fi
または
if [ "{$NUMBER_dcn}" -gt $NO ]
then
dir_dcn='/mnt/md0/capture'
fi
NUMBER_dcn は次のように入力されます。
NUMBER_dcn=$(find /mnt/md0/capture/ -maxdepth 1 -name "*.pcap" |wc -l)
どちらか一方は「予測整数式」エラーを表示するため、どちらも正確です。
答え1
変数を参照する正しい方法はです$VAR
。VAR
パディングがあるので、常にwc
ヌルではないと仮定し、実際に引用符は必要ありません。""
これは変数が完全に空であることを防ぐためです。
しかし、これはあなたの問題ではありません。この-gt
演算子には2つの引数が必要なだけでなく、整数でなければなりません。ここで渡すことは、-gt
例えば、50
1つのケースとは{50}
異なる場合です。後者は整数式ではなくで始まる文字列なので、中{
かっこを削除する必要があります。
中括弧は、変数を使用するために許可される代替構文です。$VAR
と同じです${VAR}
。これは時々次のような場合に便利です。入れる変数のやり方は、変数名が終わる場所が明確ではありません。たとえば、変数の値とインデックスを印刷するには、次のように作成する必要があります。
echo ${VAR}00
このような出力を取得してくださいHugo00
。中かっこがない場合、bashは変数を逆参照しようとしますVAR00
が、そのような変数が存在しないため失敗します。 (この場合は中括弧の前にドル記号があります。)しかし、何も挿入せずに変数をそのまま使用するので、中括弧を使用する必要はありません。