![Upstart 및 bash 함수 이름에는 "-"가 포함됩니다.](https://linux55.com/image/54550/Upstart%20%EB%B0%8F%20bash%20%ED%95%A8%EC%88%98%20%EC%9D%B4%EB%A6%84%EC%97%90%EB%8A%94%20%22-%22%EA%B0%80%20%ED%8F%AC%ED%95%A8%EB%90%A9%EB%8B%88%EB%8B%A4..png)
저자가 함수 이름에 더 일반적인 "_" 대신 "-"를 사용한 일부 bash 스크립트를 상속했습니다. 예를 들면 다음과 같습니다.
function a-b {
...
}
추악하지만 bash에서는 합법적입니다. 문제는 내가 시작 스크립트에서 이것을 발견했고
x.sh: 5행: 'ab': 유효한 식별자가 아닙니다.
그것이 기능 내용이 아니라 이름이라는 것을 깨닫는 데 시간이 좀 걸렸습니다. 어쨌든 이 경우 이름을 바꾸는 것은 쉬운 옵션이 아니며 내가 아는 한 Upstart는 구문 분석을 사용하지 /bin/sh
않습니까 /bin/bash
? 스크립트를 실행하세요. 그래서 이런 질문이 있는 것 같아요.
이름을 바꾸는 것 외에 다른 해결책이 있습니까?
다른 것이 없다면 적어도 이 질문이 다른 사람들에게 이상한 bash 코딩 스타일의 위험성과 그들이 때때로 어떻게 당신을 물릴 수 있는지에 대해 경고하기를 바랍니다.
답변1
누보부자 요리책에서,기본 쉘 변경. 3가지 옵션이 있으며, 처음 2개는 기본 셸을 /bin/sh
다른 것으로 변경하는 것과 관련됩니다. 하지만 세 번째 옵션은 특정 문제를 해결할 수 있는 것처럼 보입니다.
발췌
다른 쉘을 사용하여 실행하려는 작업 구성 파일에서 "여기에 문서"를 사용하십시오(선택한 쉘이 이를 지원한다고 가정).
script /bin/bash <<EOT echo "Hi - I am running under the bash shell" date echo "and so am I :)" EOT end script