このスクリプトがあります。
num='[0-9]'
sedcmd='-e "s/${num}/as df/g"'
echo 123 | sed -r $sedcmd
最後の行は次の結果を生成します。
sed:-e式#1、文字1:不明なコマンド: `` ''
私が逃したものは何ですか?
答え1
シェルコマンドを保存するために変数を使用せず、代わりに配列を使用してください。バラよりBashFAQ-50コマンドを変数に入れようとしていますが、複雑な場合は常に失敗します。
以下の配列を使用できます。
num='[0-9]'
argArray=('-e' "s/${num}/as df/g")
そして、単語がトークナイザーによって分割され、次のように呼び出されるのを防ぐために、配列拡張に二重引用符を追加します。
echo 123 | sed -r "${argArray[@]}"