![파일의 문자열을 스크립트로 바꾸기 [중복]](https://linux55.com/image/150950/%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A1%9C%20%EB%B0%94%EA%BE%B8%EA%B8%B0%20%5B%EC%A4%91%EB%B3%B5%5D.png)
문자열을 바꾸는 방법 중 하나 sed
는 다음과 같습니다.
sed -i 's/old_str/new_str/' file.txt
그러나 만일 replace.sh
그렇다면
sed -i 's/$1/$2/' $3
물론 실행 가능한 후에는 명령이 ./replace.sh old_str new_str file.txt
작동하지 않는 것 같습니다 . replace.sh
왜 그런 겁니까?
나는 rpl
그것이 내가 하려는 일을 정확하게 수행한다는 것을 알고 있지만 replace.sh
왜 그것이 작동하지 않는지 알고 싶습니다.
답변1
작은따옴표 안에는 매개변수 확장이 없습니다(참조:stackoverflow에 대한 이전 답변)
toto=1
echo '$toto'
> $toto
echo "$toto"
> 1
작은따옴표를 큰따옴표로 바꾸면 스크립트가 예상대로 작동합니다.