Jika saya menjalankan perintah ini dari skrip:
#my.sh
PWD=bla
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
xxx
bla
itu baik-baik saja.
Tapi, jika saya jalankan:
#my.sh
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
$ sed: -e expression #1, char 8: Unknown option to `s'
Saya membaca dalam tutorial bahwa untuk mengganti variabel lingkungan dari shell Anda harus berhenti, dan 'mengutip' $varnamebagian sehingga tidak diganti secara langsung, yang saya lakukan, dan yang berfungsi hanya jika variabel didefinisikan segera sebelumnya.
Bagaimana saya bisa mendapatkan sed untuk mengenali $varvariabel lingkungan seperti yang didefinisikan dalam shell?
set -xdi shell untuk mendapatkan shell untuk mengulangi setiap perintah sebelum dieksekusi. Ini dapat menghilangkan banyak kebingungan. (Juga, saya sering menggunakan set -uuntuk membuat de-referensi variabel yang tidak disetel kesalahan yang sulit. (Lihat set -ejuga.))