これは本(The Linux Command Line)からインポートされたスクリプトです。
#!/bin/bash
# trouble: script to demonstrate common errors
number=1
if [ $number = 1 ]; then
echo "Number is equal to 1."
else
echo "Number is not equal to 1."
fi
私はこの表現が混乱しています。
$number = 1
[コマンドでは、=演算子は文字列を比較するために使用されます。そうですか?それともそこで何が起こりましたか?
文字列は引用符で識別されますか、または引用符なしで識別されますか?
答え1
[ $number = 1 ]
文字列比較と数値比較の違いは、同一性は[ $number -eq 1 ]
状況によって異なることを意味することです。たとえば、
number="1"
if [ $number -eq 01 ]; then
echo "true"
else
echo "false"
fi
上記のコードは数字上でtrue
、while と同じコードブロックをエコーします。01
1
number="1"
if [ $number = 01 ]; then
echo "true"
else
echo "false"
fi
false
文字列が01
文字列と異なるため、エコーされます1
。
答え2
条件付き演算子のドキュメントについては、次を参照してください。
- Bash条件式
- これ
test
注文する (別名[ ... ]
) - そして
[[ ... ]]
条件付き構造