これらのコマンドをスクリプトから実行すると、次のようになります。
#my.sh
PWD=bla
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
xxx
bla
それは結構です。
しかし、実行すると:
#my.sh
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
$ sed: -e expression #1, char 8: Unknown option to `s'
私はチュートリアルで、シェルから環境変数を置き換えるには停止する必要があることを読み、$varname
直接置き換えられないようにその部分を「引用」します。これは私がやったことであり、変数が直前に定義されている場合にのみ機能します。
$var
シェルで定義されているsedを環境変数として認識させるにはどうすればよいですか?
set -x
シェルで使用して、コマンドを実行する直前にシェルに各コマンドをエコーさせます。これにより、多くの混乱が解消されます。(また、私はしばしば、set -u
未設定の変数を逆参照することをハードエラーにするために使用します(参照してくださいset -e
))