1. ホーム
  2. bash

[解決済み] 最初の引数を除くすべての引数を処理する(bashスクリプトの場合)

2022-03-17 15:24:21

質問

最初の引数をファイル名として予約し、その他のオプションの引数はスクリプトの他の部分に渡すというシンプルなスクリプトがあるのですが、このような場合、どのようにすればよいでしょうか。

Googleで調べると このウィキ しかし、それは文字通りの例を提供するものでした。

echo "${@: -1}"

みたいな感じで、他がうまくいかない。

echo "${@:2}"

または

echo "${@:2,1}"

ターミナルから"Bad substitution"と表示されるのですが。

また、bashスクリプトに渡された最初の引数以外を処理するにはどうしたらよいでしょうか?

どのように解決するのですか?

これを使う。

echo "${@:2}"


次のような構文になります。

echo "${*:2}"

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