0

3 つ以上のパラメーターを受け取ることになっているシェル スクリプト (tcsh) を作成しています。最初の 3 つはプログラムに渡され、残りは別のプログラムに渡されます。全体として、スクリプトは次のようになります。

./first_program $1 $2 $3
./second program [fourth or more]

問題は、後者を行う方法がわからないことです-3番目以降のすべてのパラメーターを渡します。

4

2 に答える 2

2

私はあなたにコマンドを提示しますshift

shift[変数]引数なし で、のメンバーを
破棄 して左にシフトします。argv[1]argv

例:

$ cat /tmp/tcsh.sh
#!/bin/tcsh

echo "$1" "$2" "$3"
shift
shift
shift
echo "$*"
$ /tmp/tcsh.sh 1 2 3 4 5 6
1 2 3
4 5 6
于 2010-05-08T14:24:49.050 に答える
1

shift次のように利用できます。

./first_program $1 $2 $3

shift # shift 3 times to remove the first 3 parameters.
shift
shift

./second program $* 

$*残りのパラメータが含まれます。

また、ゼロ以外であることを確認しshiftて確認することにより、を実行する前にエラーチェックを実行する必要があります。$#argvまたは、スクリプトのスターでの値をチェックして、$#argv少なくともであることを確認することもできます3

于 2010-05-08T14:25:15.723 に答える