3

bash$@には、スクリプトの呼び出しに使用されるすべての引数が含まれていますが、最初の引数を削除するソリューションを探しています

./wrapper.sh foo bar baz ...:

 #!/bin/bash

 # call `cmd` with bar baz ... (withouyt foo one)

電話したいだけcmd bar baz ...

4

3 に答える 3

5

shift引数配列をシフトするために使用できます。たとえば、次のコード:

#!/bin/bash
echo $@
shift
echo $@

1 2 3print1 2 3で呼び出されてから次のように生成され2 3ます。

$ ./example.sh 1 2 3
1 2 3
2 3
于 2013-04-19T13:12:05.513 に答える
3

shift$@ から引数を削除します。

シフト [n]

位置パラメーターをシフトします。

位置パラメーター $N+1,$N+2 ... の名前を $1,$2 ... に変更します。N が指定されていない場合は、1 と見なされます。

終了ステータス: N が負または $# より大きい場合を除き、成功を返します。

于 2013-04-19T13:08:34.657 に答える
0

環境変数拡張!非常にポータブルなソリューションです。

最初の引数を削除します: with $@

${@#"$1"}

最初の引数を削除: with $*

${*#"$1"}

1 番目と 2 番目の引数を削除します: with $@

${@#"$1$2"}

展開の結果は文字列であるため、 $@ または $* の両方が機能します。

リンク: Bash http://www.tldp.org/LDP/abs/html/abs-guide.html#ARGLIST
の文字列から固定のプレフィックス/サフィックスを削除します

変数展開は、gnu core-utils で定義されているため移植可能です
。このリンクで「環境変数展開」を検索してください:
https://www.gnu.org/software/coreutils/manual/html_node/

于 2018-10-26T16:57:37.010 に答える