함수가 스크립트에서 실행되지 않습니다.

함수가 스크립트에서 실행되지 않습니다.

다음 내용으로 ShellScript.sh라는 스크립트를 만들었습니다.

#!/bin/sh
# Shell script 

function help {
  echo ""
  echo "./ShellScript.sh {start | stat}"
  echo ""
  echo "These are some commands:"
  echo ""

  # Start command
  echo "start"
  echo "This starts the process"
  echo ""

  # Stat command
  echo "stat"
  echo " abcxyz"
  echo ""
}

그러나 명령줄에 "./ShellScript.sh help"를 입력하면 아무 일도 일어나지 않습니다. 나는 하루 동안 이 문제를 해결하려고 노력해 왔으며 작은 것을 놓치고 있다고 확신하지만 그것이 무엇인지 모르겠습니다!

답변1

최종 목표가 무엇인지는 확실하지 않지만 ./ShellScript.sh help일단 전화해 보세요.범위스크립트에 대한 "도움말"; Arkadiusz Drabczyk이 언급했듯이 ShellScript.sh가 수행하는 모든 작업은 함수를 설정한 다음 종료하는 것입니다.

프로세스를 시작하거나 계산하기 위해 옵션 기반 스크립트를 작성하는 것처럼 보입니다. 이 경우 인수를 구문 분석하고 함수를 호출하려면 "기본" 수준 코드가 필요합니다.

예를 들어 ShellScript.sh 끝에 다음을 추가합니다.

case "$1" in
start)
    echo "This starts the process"
    ;;
stat)
    echo "stat"
    echo " abcxyz"
    ;;
help)
    help
    ;;
*)
    echo "usage: $0 start|stat"
    ;;
esac

제안하자면, "stat"(인간에게)는 "start"와 매우 유사합니다. "status"를 고려해보세요.

답변2

함수를 정의했지만 실제로는 아무 작업도 수행하지 않았습니다. 당신은해야합니다부르다스크립트에서 기능합니다. 이것이 보다 일반적인 접근 방식이고 스크립트의 인수를 기반으로 여러 함수 중 하나를 호출하려는 경우 다음과 같이 설정하면 됩니다(그 중 일부만 보여드렸고 끝에 "$"를 추가했습니다).

    # Stat command
    echo "stat"
    echo " abcxyz"
    echo ""
}

$1

관련 정보