2

sed(たとえば)コマンドを実行したいのですが、実行するecho前にそれを実行します。

コマンドを変数に保存しようとしました。
次に、echoそれを実行します。

command="sed -i 's/FOO/BAR/g' myFile";
echo "Command: \"$command\"" ;
$command ;

私が得たエラー:

Command: "sed -i 's/FOO/BAR/g' myFile"
sed: -e expression #1, char 1: unknown command: `''

一重引用符をエスケープするにはどうすればよいですか? (または、二重引用符を使用できますか?)

私はそれをグーグルで検索しましたが、答えが見つかりませんでした。

4

3 に答える 3

2

特定のコマンドをエコーし​​て実行する便利な関数を定義します。

verbosely_do () {
  printf 'Command: %s\n' "$*";  # printf, not echo, because $@ might contain switches to echo
  "$@";
}

verbosely_do sed -i 's/FOO/BAR/g' myFile

これにより、次のことが得られます。

Command: sed -i s/FOO/BAR/g myFile

sed(1) コマンドを実行します。

于 2013-04-18T15:50:23.683 に答える