Это моя первая попытка использовать getopts, и пока она у меня не работает. Код в моем скрипте:
while getopts "s:" opt; do
case $opt in
s) subj=$OPTARG;;
\?) echo "Incorrect usage";;
esac
done
echo ""
echo $subj
Когда я пытаюсь запустить скрипт следующим образом:
myScript.sh -s 100
Я хочу, чтобы он повторял указанный мной идентификатор субъекта. Пока что это просто дает мне пустое заявление.
myScript.sh
требует, чтобы скрипт был исполняемым и находился в каталоге вашегоPATH
, а текущий рабочий каталог обычно не находится вPATH
по соображениям безопасности. - person chepner   schedule 13.03.2018source myScript.sh -s 100
в оболочке, не так ли? Счетчикgetopts
используется, чтобы знать, какой аргумент является следующим, не сбрасывается между последовательными источниками, поэтомуgetopts
просто не видит никаких аргументов для анализа. Явная установкаOPTIND=1
перед повторным использованиемsource
должна дать вам ожидаемое поведение. - person chepner   schedule 13.03.2018