私は、複数の引用符で囲まれた単語を含む文字列変数を、コマンドのパラメータとして置き換えようとしています。引用符で囲まれた複数単語の文字列を引数に代える方法は?
したがって、私たちを与える次のサンプルスクリプト(出力が標準エラーに記録させるシェバングに-xを、注)、
#!/bin/bash -x
myArg="\"hello\" \"world\""
echo "string is:" $myArg
exit
を与え、
+ myArg='"hello" "world"'
+ echo 'string is:' '"hello"' '"world"'
string is: "hello" "world"
+ exit
2行目は実際にコマンドに渡される内容を示しています。 bashは、文字列の各単語に一重引用符を追加しました。代わりに、私が代わりに "$ myArg"を引用すると、同じことが起こりますが、各単語ではなく文字列全体で発生します。
echo
の代わりに、"*"
(シェルで展開してはならない)のように、引数の一部を引用符で囲む必要があるプログラムに文字列を渡しているとします。
明確にするために、私は展開中に一重引用符を追加したくありません。どうすればこれを達成できますか?
何をしていますか?'eval'を使ってプログラムに渡された文字列に' '* ''や '*'が含まれているかどうかは関係ありません。 – Sorpigal
混乱している人には:シバンの '-x'に注意してください。すると出力がログに記録されます。 – user123444555621
@ Pumbaa80、確かに、私は質問にその明確化を加えました。 –