にして引用符でBASH引数をRepassing?身体のスクリプトの議論を引用することは私を助けない。 test.shの例本体スクリプト:3つの引数の代わりに、4つのファンクションパスを作るためにどのように機能
func1(){
echo "Func1: Amount arguments: $#, Passed arguments: [email protected]";
for i in [email protected]; do
echo "ARG=$i";
done;
}
echo "Body: Amount arguments: $#, Passed arguments: [email protected]";
func1 [email protected];
# quoting with single or double quote
res="";
for i in "${@}"; do
# try to figure out if quoting was required for the $i:
grep -q "[[:space:]]" <<< "$i" && res="${res} \"${i}\"" || res="${res} ${i}";
done;
echo "Quoted arguments: $res";
func1 $res;
私は次の引数を指定してスクリプトを実行します。
bash ./test.sh 1 2 "3 4"
結果:
Body: Amount arguments: 3, Passed arguments: 1 2 3 4
Func1: Amount arguments: 4, Passed arguments: 1 2 3 4
ARG=1
ARG=2
ARG=3
ARG=4
Quoted arguments: 1 2 "3 4"
Func1: Amount arguments: 4, Passed arguments: 1 2 "3 4"
ARG=1
ARG=2
ARG="3
ARG=4"
を私は "3 4" と第三引数を取得したいです。どうやってするの?ありがとうございました。
作品うーん...それは実際に動作する、引用符であれば - "$ @を"。これは私のための最良の解決策です。追加のコードは必要ありません。それは奇妙なことですが、早く私はそれをやろうとしましたが、成功しませんでしたが、今はすべてがうまく動作することを確認しました。ありがとうございました! – dva
他のソリューションは、ネストされた関数のために、より一般的なものですが、これはあなたのコードのための十分なはずです。 'for'ループの引用符も注意してください(これは以前の試みでおそらく忘れてしまったものです)。それが有用であった場合 –
(https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)[答えを受け入れる]ご検討ください。 –