script.sh
여러 형식의 인수를 받아들이는 bash 스크립트()가 있습니다 --keyword value
. 다음 줄을 사용하여 스크립트를 호출하면 이를 읽습니다.
# Get our arguments using flags,
while [[ "$#" > 1 ]]; do
case "$1" in
"--h")
help
exit
;;
"--param1") param1="$2"; shift 2;;
"--param2") param2="$2"; shift 2;;
"--param3") param3="$2"; shift 2;;
esac
done
--param4
하나가 아닌 하나 이상의 매개변수를 허용하는 매개변수를 소개하고 싶다고 가정해 보겠습니다 . 예를 들어
bash ./script.sh --param1 a --param2 b --param3 c --param4 x y z
주문하다해서는 안 된다이론적으로 중요하므로 param4를 누른 후 또 다른 --param 플래그를 칠 때까지 다음 매개변수를 계속 가져와야 합니다.
이 목록을 실제로 어떻게 구문 분석할 수 있나요? 최종 목표는 param4를 반복하여 Python 스크립트에 매개변수로 제공하는 것입니다. (그것은 마치):
for item in $param4; do
python my_python_script.py --${item}
done
답변1
이 시도:
usage(){ echo 'usage: ...'; exit 2; }
while [ "$#" -gt 1 ]; do
case $1 in
--param1) param1=$2; shift 2;;
--param2) param2=$2; shift 2;;
--param3) param3=$2; shift 2;;
--param4)
shift
while [ "$#" -gt 0 ]; do
case $1 in
--param*) break;;
*) param4+=("$1"); shift;;
esac
done
;;
*) usage ;;
esac
done
[ "$#" -gt 0 ] && usage
for p in "${param4[@]}"; do
echo python "--$p"
done