
다른 스크립트의 특정 조건에 따라 이메일을 보내는 세 가지 별도의 bash 스크립트가 있습니다. 제가 하고 싶은 것은 이 모든 것을 하나의 스크립트로 결합하여 작동하게 만들고 메인 스크립트에서 사용하는 것입니다. 단, 플래그를 사용하여 올바른 함수를 호출하는 것입니다. 그래서 나는이 코드를 가지고 있습니다
main()
{
while getopts "f:s:k:" opt; do
case ${opt} in
f) sendFirstEmail
;;
s) sendSecondEmail
;;
k) sendKillEmail
;;
esac
done
}
main
가독성을 위해 이 코드 조각에 실제 함수를 넣지 않았지만 이러한 함수는 각각 하나의 매개변수( )를 사용합니다 $1
. 그래서 제가 원하는 것은 다음과 같은 일을 할 수 있는 것입니다. 첫 번째 이메일을 johndoe에게 보내는 것입니다. 이것을 실행하면 코드는 아무 작업도 수행하지 않습니다.script.sh -f [email protected]
답변1
스크립팅의 표준인 플래그를 구문 분석해야 합니다. Bash 내장 getopts
또는 case
생성자를 사용할 수 있습니다. man bash
자세히보다. 먼저 모든 함수를 정의한 다음 메인 함수를 정의 main
하고 마지막으로 이를 호출하여 플래그를 전달합니다.
스크립트가 호출되는 방식에 따라 전환하고 다른 이름으로 심볼릭 링크를 만들 수도 있습니다.
답변2
플래그와 함께 제공되는 매개변수를 함수에 전달하지 않습니다. getopts 플래그 값을 보유하는 변수는 OPTARG입니다.
main()
{
while getopts "f:s:k:" opt; do
case “${opt}” in
f) sendFirstEmail “$OPTARG”
;;
s) sendSecondEmail “$OPTARG”
;;
k) sendKillEmail “$OPTARG”
;;
esac
done
}
main