Bu komutları bir komut dosyasından çalıştırırsam:
#my.sh
PWD=bla
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
xxx
bla
iyi.
Ama eğer koşarsam:
#my.sh
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
$ sed: -e expression #1, char 8: Unknown option to `s'
Ortam değişkenlerini kabuktan değiştirmek için durdurmanız gerektiğini ve $varname
doğrudan dışarıda yer değiştirmemesi için parçayı 'alıntı' yapmanız gerektiğini okudum, yaptığım şey bu ve sadece değişken daha önce tanımlanmışsa çalışır.
Bir $var
kabuğu kabukta tanımlandığı gibi bir ortam değişkeni olarak tanımak için nasıl sed alabilirim ?
set -x
onları çalıştırır hemen önce her komutu echo shell almak için kabukta. Bu çok fazla karışıklığa neden olabilir. (Ayrıca, sık sık tanımlanmamış set -u
değişkenleri referans yapmak için de kullanıyorum . (Ayrıca bkz set -e
.))