n番目の特定のパラメータに残りのパラメータをすべて含む変数を生成する方法

n番目の特定のパラメータに残りのパラメータをすべて含む変数を生成する方法

$ a ...という変数から、3番目のパラメータから9番目のパラメータまでのすべてのデータを保持する文字列など、n番目の特定のパラメータに残りのすべてのパラメータを含む変数を生成するにはどうすればよいですか?よろしくお願いします。

ベストアンサー1

Bash / ksh / zshでは、同様のアプローチを使用して${@:3:7}3番目から9番目の引数を別の単語として処理したり、最初の文字${*:3:7}IFS連結線で連結したりできます。 (7、3から9まで7だから。)

だから:

$ set -- $(seq 11 21)
$ echo "${*:3:7}"
13 14 15 16 17 18 19

または

$ a="${*:3:7}"

ただし、これらの引数を他のコマンドの引数として渡すには、"${@:3:7}"関連するコマンドラインで直接使用します。

somecmd "${@:3:7}"

標準シェルでこれを行う必要がある場合は使用できません。代わりに、最初の引数を削除してを使用する必要が${var:n:m}あります。shift"$@"

arg1=$1
arg2=$2
shift 2
somecmd "$@"

おすすめ記事