몇 가지 매개변수가 포함된 스크립트를 작성 중이므로 사용하고 있지만 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
잠재적인 파일 이름이라고 가정되는 경우 유효성 검사가 필요하지 않습니다. 모든 문자 시퀀스는 잠재적으로 유효한 파일 이름입니다.