sedコマンドで引用された変数はエラーを生成します。

sedコマンドで引用された変数はエラーを生成します。

このスクリプトがあります。

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[@]}"

関連情報