2013-05-06 5 views
2

작동하지 않습니다 나오지는 내가 가진 : 있는 test.txt :쉘 스크립트 -

version-1 
version-1 

ori.sh :

old="version-1" 
new="version-2" 
sed -i .bak 's/${old}/${new}/g' test.txt 

ori.sh를 실행, 아무 일도 발생하지합니다.

있는 test.txt * :

version-2 
version-2 

어떤 아이디어 나있는 test.txt의 모습 것으로 기대?

+0

bash는 -x''로 봅니다. –

답변

8

작은 따옴표가 문제입니다. bash (또는 다른 쉘)는 작은 따옴표로 변수를 확장하지 않습니다. 그 쉘은 변수를 확장 할 수 있도록

사용 따옴표이 나오지 명령을

sed -i.bak "s/${old}/${new}/g" test.txt 
3

당신은 당신의 변수를 따옴표를 두 배로해야합니다. 나를 위해

다음 작품 :

old="version-1" 
new="version-2" 
sed -i.bck 's:'"${old}"':'"${new}"':g' test.txt