私はecho
命令を学んでいます:
$ echo $100
00
$ echo $1
$
それでは、なぜ未定義の変数としてecho
解釈され、全体の代わりに末尾のゼロが印刷されますか? Ubuntu 14.04を使用しています。$1
$100
答え1
これ位置パラメータ、、、、...、、には現在、シェル$1
またはシェル関数に渡されたコマンドライン引数が含まれています。文字列は後にゼロが2つ続くと解釈されます。これは設定されていないか空の場合に発生します。$2
$9
$100
$1
00
$1
スクリプトで最初の3つの位置パラメータを明示的に設定してテストします。
set -- a b c
echo "$100 $200 $300"
結果は次のとおりです。
a00 b00 c00
9より大きい位置引数には例を使用してアクセスする必要があるため、次の内容と「位置引数10または100」(括弧がないため)の間に${10}
あいまいさはありません。$1
00
リテラル文字列を印刷するには、シェルからエスケープするか、単一引用符を使用する必要が$100
あります。$
echo \$100
echo '$100'