1

data='Type=Eatable Fruits="Apple Orange"'最初、2 番目、3 番目のコマンド ライン引数を 1 行ずつ単純に出力する bash スクリプト (print.sh) のような変数を渡す必要があります。

変数dataをスクリプトに渡すと、次を実行して: sh print.sh $data、出力は

Type=Eatable
Fruits="Apple
Orange"

しかし、その後必要だった

Type=Eatable
Fruits="Apple Orange"
 

2 行目も二重引用符を出力する必要があります。(3 番目の引数は NULL/Nothing にする必要があります)

上記のような出力を得るには何を変更すればよいですか?

4

3 に答える 3

2

を実行すると、次sh print.sh $dataのようにトークン化されます。

[ sh, print.sh, $data]

$dataは引用符で囲まれていないため、変数の値dataはトークン化されて

[ Fruits="Apple, Orange"]

これは、元のコマンドに追加されて作成されます

[ sh, print.sh, Fruits="Apple, Orange"]

そして、 $1= 、 $2= でprint.sh呼び出されますFruits="AppleOrange"

実際には、これを の 2 つではなく 1 つのパラメーターにしたかったようですprint.sh"$data"Pierre-Louis Laffont's answer によると、代わりに使用$dataするとこれが実現します

于 2012-12-14T10:39:50.677 に答える
1

二重引用符の間で変数を使用して電話をかけます。

$ ./script.sh $data
Fruits="Apple
Orange"

$ ./script.sh "$data"  
Fruits="Apple Orange"
于 2012-12-14T10:22:16.840 に答える
0

私の2セント、スクリプトは変更が必要になります。使っていますか

echo $1
echo $2

試してみてください

echo $1 $2

文字列を渡したとき、すべてがarg1と見なされ、arg2が空だったと思います。$#を印刷して確認します。

于 2012-12-14T10:27:01.553 に答える