У меня есть сценарий оболочки testShell.sh
который использует getopts
как показано ниже:
#!/bin/bash
while getopts ":j:e:" option; do
case "$option" in
j) MYHOSTNAME=$OPTARG ;;
e) SCRIPT_PATH=$OPTARG ;;
*) ;;
esac
done
echo "j=$MYHOSTNAME"
echo "e=$SCRIPT_PATH"
shift $((OPTIND - 1))
echo "remaining=$@"
Когда я тестирую, запустите его следующим образом:
$ testShell.sh -jvalue1 -evalue4 -Djvalue3 -pvalue2
Вывод, который я получаю, следующий:
j=value3
e=2
remaining=
Но я хотел бы вывод как:
j=value1
e=value4
remaining=-Djvalue3 -pvalue2
Можно убедиться , что getopts
выглядит только на первый пост персонажа -
символ? чтобы он не интерпретировал -Djvalue3
как -jvalue3
и -pvalue2
как -e2
.