2009-09-17 7 views
0

I 스크립트의 내부 명령을 대체하는 문제가이 스크립트에서 문제가되는 라인은 다음과 같습니다bash 스크립트에서 sed replace 명령을 사용 하시겠습니까?

nail -r "[email protected]" -s "Subject" -S smtp=255.255.255.255 

그러나 I :

mail -s "$(hostname) on $(date)" 

그것은이 같은 라인을 교체해야합니다 대체 할 sed 수 없습니다 :) 그 목적을 위해 작은 스크립트를 썼습니다 :

#!/bin/bash 

old="mail -s \"\$(hostname) on \$(date)" 
new="nail -r \"[email protected]\" -s \"Subject\" -S smtp=255.255.255.255" 

sed -i 's|$old|$new|' script.sh 

누구 조언 좀 가지고 있습니까?

답변

3
sed -i "s|$old|$new|" script.sh 

큰 따옴표에 유의하십시오.

+0

이 바보 같은 실수를 지적 해 주셔서 감사합니다 :) 나는 sed를 사용하여 교체해야하고 이중 따옴표를 추가해야하며 필요할 때마다 이스케이프 작업에 지쳐있어 작은 따옴표로 묶어서 잊어 버렸습니다 :) – f10bit

1

기본적으로 Sed는 작업 영역 편집에서 수행하지 않습니다. gnu Sed를 사용하고 있다면, -silbak 플래그를 붙이십시오.

+0

영업 장소에서'-i' 옵션이 있습니다. 유일한 차이점은 백업본이 (특이한?) 접미사 "kbak"로 만들어지게된다는 것입니다. –

+0

그래, 그가 gnu sed를 사용하고 있는지 궁금해했다 – ennuikiller

관련 문제