echoは$ 100をどのように解析しますか?

echoは$ 100をどのように解析しますか?

私はecho命令を学んでいます:

$ echo $100
00
$ echo $1

$

それでは、なぜ未定義の変数としてecho解釈され、全体の代わりに末尾のゼロが印刷されますか? Ubuntu 14.04を使用しています。$1$100

答え1

これ位置パラメータ、、、、...、、には現在、シェル$1またはシェル関数に渡されたコマンドライン引数が含まれています。文字列は後にゼロが2つ続くと解釈されます。これは設定されていないか空の場合に発生します。$2$9$100$100$1

スクリプトで最初の3つの位置パラメータを明示的に設定してテストします。

set -- a b c

echo "$100 $200 $300"

結果は次のとおりです。

a00 b00 c00

9より大きい位置引数には例を使用してアクセスする必要があるため、次の内容と「位置引数10または100」(括弧がないため)の間に${10}あいまいさはありません。$100

リテラル文字列を印刷するには、シェルからエスケープするか、単一引用符を使用する必要が$100あります。$

echo \$100
echo '$100'

関連情報