이것을 시도하십시오 ...라는 파일을 만드십시오 bash-is-odd.sh
:
#!/bin/bash
echo "echo yes i do odd things" >> bash-is-odd.sh
이것은 bash가 실제로 "당신이가는대로"스크립트를 해석한다는 것을 보여줍니다. 실제로 장기간 실행되는 스크립트를 편집하면 임의의 문자를 삽입하는 등 예측할 수없는 결과가 발생합니다. 이유는 무엇입니까? bash는 마지막 바이트 위치에서 읽기 때문에 편집하면 현재 읽고있는 문자의 위치가 이동합니다.
Bash는 한마디로이 "기능"때문에 매우 안전하지 않습니다. svn 및 rsync
bash 스크립트와 함께 사용하면 기본적으로 결과를 "병합"하기 때문에 특히 문제가 발생합니다. 제자리에서 편집합니다. rsync
이를 수정하는 모드가 있습니다. svn과 git은 그렇지 않습니다.
해결책을 제시합니다. 다음과 같은 파일을 만듭니다 /bin/bashx
.
#!/bin/bash
source "$1"
이제 #!/bin/bashx
스크립트에서 사용하고 항상 bashx
대신 bash
. 이렇게하면 문제가 해결 rsync
됩니다. 스크립트를 안전하게 사용할 수 있습니다.
@ AF7에서 제안 / 테스트 한 대체 (인라인) 솔루션 :
{
}
exit $?
중괄호는 편집을 방지하고 종료는 추가를 방지합니다. 물론 bash가 -w
(전체 파일) 과 같은 옵션을 제공하거나 이와 같은 작업을 수행했다면 훨씬 나을 것입니다.