기본적으로 파일을 구문 분석하는 스크립트가 있습니다. 이 스크립트를 실행할 때 두 개의 플래그를 설정하고 싶습니다.
다음은 두 가지 경우입니다. --hello-you
플래그를 설정한 다음 그 뒤에 두 개의 필수 매개변수를 사용하고 싶습니다. ./script.sh --hello-you <FILE> <PATH>
-h or --help
도움말 매뉴얼을 제공하고 싶습니다 . ./script.sh --help
또는 ./script.sh -h
-h 또는 --help를 사용하여 사례 $1을 전달하는 것이 쉽다는 것을 알고 있지만 문제는 사용자가 --hello-you
프로그램을 누를 때 다음과 같이 인식된다는 것입니다.-h
답변1
긴 옵션을 잊어버리고 이를 사용하여 이 작업을 수행하는 것이 더 낫습니다 getopts
. 그렇지 않으면 다음과 같이 위치 매개변수를 반복할 수 있습니다.
#!/bin/bash
usage () {
cat <<EOF >&2
Usage: $(basename "$0") [-h] --hello-you FILE PATH
EOF
exit 1
}
while (($#)); do
case $1 in
--hello-you)
file=$2
path=$3
shift 2
[[ -z "$file" || -z "$path" ]] && usage
;;
-h|--help) usage;;
*) usage;;
esac
shift
done
echo "File is $file"
echo "Path is $path"
이전에 무엇을 시도하셨는지 잘 모르겠지만 사례가 --hello-you
그런 식으로 해석되지는 않습니다 -h
. 어쩌면 귀하의 사례와 비슷한 것이 있을까요 --h*)
?
또한 이는 파일인지 여부가 아니라 합계가 설정되어 있는지 확인하는 것일 뿐이지 file
만 path
스크립트가 실행되기 전에 해당 합계가 존재하도록 할지 여부에 따라 이를 수행할 수도 있습니다. 또한 --hello-you
의도한 것인지 확실하지 않기 때문에 설정이 전혀 필요하지 않습니다 .