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' $varname
bagian sehingga tidak diganti secara langsung, yang saya lakukan, dan yang berfungsi hanya jika variabel didefinisikan segera sebelumnya.
Bagaimana saya bisa mendapatkan sed untuk mengenali $var
variabel lingkungan seperti yang didefinisikan dalam shell?
set -x
di shell untuk mendapatkan shell untuk mengulangi setiap perintah sebelum dieksekusi. Ini dapat menghilangkan banyak kebingungan. (Juga, saya sering menggunakan set -u
untuk membuat de-referensi variabel yang tidak disetel kesalahan yang sulit. (Lihat set -e
juga.))