Ben yürütmek aşağıdaki bash komut ile bir betik değişkeni kullanmaktır . Bunun yerine, literal metin $ sürümü ekleniyor.nasıl sed
Bunun yerine sedgmentin geçerli değerini kullanmak için ne yapmalıyım?
Ben yürütmek aşağıdaki bash komut ile bir betik değişkeni kullanmaktır . Bunun yerine, literal metin $ sürümü ekleniyor.nasıl sed
Bunun yerine sedgmentin geçerli değerini kullanmak için ne yapmalıyım?
sed "s/\${version.number}/$version/" template.txt > readme.txt
Sadece çift tırnak işareti dolar işareti ile değiştirilir. Bu aynı zamanda tek tırnakların dolar işaretinin kaçmasını gerektirmediği anlamına gelir.
Ayrıca sadece Biraz eski değişkenleri
sed 's/'${version.number}'/'$version'/' template.txt > readme.txt
Bu en iyi çalıştı. – Val
unquote olabilir, ama yine de benim için o takdirde Philip söylediği gibi çift kaçış kullanarak (ve parantezi kaçan çalıştı ... yararlı olabilir siz) ... bunları kullanmak:
#!/bin/bash
LIVE_DB_NAME='wordpress';
STAGING='staging';
sed -r "s/define\('DB_NAME', '[a-zA-Z0-9]+'\);/define('DB_NAME', '\\${LIVE_DB_NAME}');/" ${STAGING}/wp-config.php >tmp1;
Ama dolar işareti ifadesi sed' 'tarafından regex olarak kabul edilir, çünkü kaçan gerekmektedir. Yani bence '' olmalı. – Philipp
@Philipp, aslında '$' işareti, regex'in (veya muhtemelen alt ifadenin) son karakteri olduğunda sadece bir ankrajdır. Ama itiraf ettim ki şanslıyım. ;) İsteğe bağlı olarak kaçmış bir eğik çizgi ekleyebilirsiniz, ancak daha sonra '\\\ $'. –
Düzeltme için teşekkürler. – Philipp