변수가 문자열인지 테스트

변수가 문자열인지 테스트

몇 가지 매개변수가 포함된 스크립트를 작성 중이므로 사용하고 있지만 getopts 하나의 매개변수로 문제를 해결하고 싶습니다.

예를 들어, 스위치를 사용 -d하고 원하는 매개변수 -d는 디렉토리 경로입니다(예 ./work: .

숫자가 아닌 사용자가 입력한 문자열이나 경로를 테스트하고 싶습니다. 이 문제를 해결할 방법이 있나요? 다음과 같이 해결하고 싶습니다.

If (test)
  then echo it is string
else 
  echo it is not string       

답변1

각 변수는 문자열입니다.

"숫자입니다"와 "숫자가 아닙니다"를 구별하려면 테스트해 보세요.

while getopts d: OPTLET; do
  case "$OPTLET" in
    d)
      case "$OPTARG" in
        *[!0-9]*) echo 1>&2 "Non-numeric argument to -d, stopping."; exit 2;;
        *) number_of_foo=$OPTARG;;
      esac;;
  esac
done

이것이 당신이 정말로 원하는 것인지 귀하의 질문에서 명확하지 않습니다. 숫자문자열. 123유효한 파일 이름입니다. 따라서 인수가 -d잠재적인 파일 이름이라고 가정되는 경우 유효성 검사가 필요하지 않습니다. 모든 문자 시퀀스는 잠재적으로 유효한 파일 이름입니다.

관련 정보