私のbashスクリプトの中で、私はゼロ、1つまたは2つのパラメータ(スクリプトが認識できる)を解析し、残りのパラメータをスクリプトで呼び出されたコマンドに転送したいと思います。どうやってやるの?bashスクリプトで他のコマンドにパラメータを転送するにはどうしたらいいですか?
例えば:
私のbashスクリプトの中で、私はゼロ、1つまたは2つのパラメータ(スクリプトが認識できる)を解析し、残りのパラメータをスクリプトで呼び出されたコマンドに転送したいと思います。どうやってやるの?bashスクリプトで他のコマンドにパラメータを転送するにはどうしたらいいですか?
例えば:
を生成し、引数を "食べる" に組み込みコマンドshift
を使用します。その後、子プロセスを呼び出して、残りのすべての引数を含めるために引数"[email protected]"
を渡します。引用符は、引数リストの展開が適切に引用されるため、保持する必要があります。
bashはシフトコマンドを使用し shifttest.sh:
#!/bin/bash
echo $1
shift
echo $1 $2
shifttest.sh 1 2 3
1
2 3
bashのは、あなたがこのように渡す/処理するパラメータを選択することができますので、(Subsets and substringsを参照)のサブセットパラメータをサポートしています。
開いて新しいファイルをして、それを編集:vimのr.sh
echo "params only 2 : ${@:2:1}"
echo "params 2 and 3 : ${@:2:2}"
echo "params all from 2: ${@:2:99}"
の実行には、 :
chmod u+x r.sh
./r.sh 1 2 3 4 5 6 7 8 9 10
結果は次のとおりです。
params only 2 : 2
params 2 and 3 : 2 3
params all from 2: 2 3 4 5 6 7 8 9 10
"$ @"は$ *より安全です – pixelbeat
違いは何ですか? –
@pixelbeat:ありがとう、良いキャッチ。私は編集しました。 @ŁukaszLew:マニュアルのリンク先ページを参照してください。 :)基本的に、それはより良い引用を処理します。 – unwind