1
bash 스크립트 myscript.sh
이 있습니다. 예를 들어, diff
과 같이 다른 스크립트, 명령 또는 내장 스크립트를 호출 할 수 있습니다. 나는 옵션을 myscript.sh
에 전달하려고하는데, 그 중 일부는 diff
으로 전달 될 것입니다.bash 스크립트에서 호출 된 스크립트, 명령 또는 기본 제공에 전달 된 옵션
나는이 getopt
를 통해 옵션 문자열 optstring
을 설정 한 다음
eval "diff ${optstring} ${file} ${TRG_DIR}/${filebase2}"
는 지금까지이 일을 사용하는 것입니다,하지만이 문제에 인수를 전달하는 경향이 경우 나도 몰라 구현하는 방법 어쨌든, ...
더 좋은 방법이 있습니까?
내가
optstring
를 설정하는 방법은
set -o errexit -o noclobber -o nounset -o pipefail
params="$(getopt -o qy --long brief,side-by-side,suppress-common-lines --name "$0" -- "[email protected]")"
if [ $? != 0 ] ; then echo "Failed parsing options." >&2 ; exit 1 ; fi
echo params=$params
echo [email protected]
eval set -- "$params"
optstring=""
# These variables are likely not needed
brief=false
sbs=false
scl=false
#while false ; do
while true ; do
case "$1" in
-q|--brief)
optstring=${optstring}" -q"
brief=true
echo "brief"
shift
;;
-y|--side-by-side)
optstring=${optstring}" -y"
sbs=true
echo "side-by-side"
shift
;;
--suppress-common-lines)
optstring=${optstring}" --suppress-common-lines"
scl=true
echo "suppress-common-lines"
shift
;;
--)
shift
break
;;
*)
echo "Not implemented: $1" >&2
exit 1
;;
esac
done
echo optstring=${optstring}
내가 어떤 옵션이 없을 때, 나는 오류'옵션 [@]를 얻을 것을 발견 : 경우에 변수 확장을 모두 인용하고 있는지 확인 그들은 공백이 있습니다. 어떻게 제거 할 수 있습니까? –
https://stackoverflow.com/questions/7577052/bash-empty-array-expansion-with-set-u가 문제를 해결합니다. –