나는 명령 줄 인수를 구문 분석하고있는 셸 스크립트가 있습니다. 나의 주장은 그 속에 길이있다. 예 : mycript.sh -c test -s global -n /mydir/test1 -d /orgdir/test35
스크립트를 실행하고 경로 (특수 문자 "/")가 포함 된 인수를 반향하면 빈 경로가 표시됩니다. 이 에코의쉘 스크립트에서 명령 줄 구문 분석
#/!bin/bash
...
while getopts c:hs:n:d opt
do
case "$opt" in
c) INST=$OPTARG;;
d) INST_DIR=$OPTARG;;
h) usage;;
s) METHOD=$OPTARG;;
n) MAINTENANCE_DIR=$OPTARG;;
\?) usage;;
esac
done
echo INST dir is [$INST_DIR]
echo MAINTENANCE dir is [$MAINTENANCE_DIR]
.......
결과
가INST dir is []
MAINTENANCE dir is []
가 가
누군가가 여기에 잘못된 무엇인지 말할 수있다?
INST dir is []
MAINTENANCE dir is [/mydir/test1]
내가 같이 스크립트의 라인 (4) 변경 :
스크립트와
귀하의 문제에 대한 직접적인 해결책은 아니지만 [docopt] (https://github.com/docopt/docopts)에서 구문 분석 할 수있는 휴대용 언어를 사용하는 것이 좋습니다. 인수. – zmo
'docopt'는 여전히 제 3 자 솔루션입니다. 'getopts'는'bash'의 일부이기 때문에 완전히 이식 가능합니다 (어쨌든'bash'가 사용 가능하다는 전제하에). – chepner