Upstart 및 bash 함수 이름에는 "-"가 포함됩니다.

Upstart 및 bash 함수 이름에는 "-"가 포함됩니다.

저자가 함수 이름에 더 일반적인 "_" 대신 "-"를 사용한 일부 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

관련 정보