変数番号は文字列として扱われますか?

変数番号は文字列として扱われますか?

これは本(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 と同じコードブロックをエコーし​​ます。011

number="1"
if [ $number = 01 ]; then
  echo "true"
else
  echo "false"
fi

false文字列が01文字列と異なるため、エコーされます1

答え2

条件付き演算子のドキュメントについては、次を参照してください。

関連情報