シェルスクリプトで$ 14を使用して14番目の位置引数にどのようにアクセスしますか?

シェルスクリプトで$ 14を使用して14番目の位置引数にどのようにアクセスしますか?

Unixの位置パラメータについて読んでいましたが、次のことがわかりました。

シェルでは、コマンドラインに少なくとも128個の引数を含めることができますが、シェルプログラムは、指定された時間に$ 1から$ 9までの9つの位置引数を参照するように制限されています。 Shiftコマンドを使用してこの制限を解決できます。

だから私は次の簡単なシェルスクリプトを作成しましたfile

#! /bin/bash
echo $14

次に、次のように実行します。

./file 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

私は14個を得ました!

shiftもしそうなら、シェルがコマンドを使用せず、10個以上の引数($ 0から$ 9まで)を許可しない場合、これはどのように可能ですか?

答え1

走るとき

echo $14

何が起こるかは、bashが引数を個別に解釈するということ$14です。その後、拡張され(この場合は「1」と同じ)、文字列が追加されて「14」になります。これが期待したものですが、実際にはBashが実際に機能する方法の副作用です。コメントに記載されている@steeldriverのように、次のようにスクリプトを実行します。$14$14

./file a b c d e f g h i j k l m n

その後、呼び出しはecho $14「n」ではなく「a4」を出力します。

変数は二重引用符で囲まれています。

echo "$14"

Bashでは、変数はまだ正しく拡張されません。標準的なアプローチは、変数名の周りに中かっこを使用することです。

echo ${14}

詳しくは公式ドキュメントをご覧ください。パラメータ拡張バッシュから。また、次のようなより素晴らしいことがたくさんあります。

${14^^*}

パラメータ番号14を大文字で表します。読んで! :)

関連情報