最初の引数を除くすべての引数を処理する(bashスクリプト内) 質問する

最初の引数を除くすべての引数を処理する(bashスクリプト内) 質問する

最初の引数がファイル名用に予約されており、他のすべてのオプションの引数はスクリプトの他の部分に渡される単純なスクリプトがあります。

Googleを使って見つけたこのウィキしかし、それは文字通りの例を示しました:

echo "${@: -1}"

他には何も動作しません。たとえば、

echo "${@:2,1}"

ターミナルから「Bad replacement」というメッセージが表示されます。

問題は何ですか? また、bash スクリプトに渡される最初の引数以外のすべてを処理するにはどうすればよいですか?

ベストアンサー1

これを使って:

echo "${@:2}"

次の構文:

echo "${*:2}"

これも同様に機能しますが、推奨されません。@ゴードンすでに説明したように、 を使用すると*、すべての引数がスペースを含む単一の引数として一緒に実行されますが、 は引数@間の区切りを保持します (引数自体にスペースが含まれている場合でも)。 では違いはありませんechoが、他の多くのコマンドでは重要です。

おすすめ記事