Возможно ли передать аргументы командной строки в функцию из сценария bourne, чтобы позволить getopts обрабатывать их.Использование getopts в пользовательской функции в оболочке bourne
Остальная часть моего скрипта прекрасно упакована в функции, но начинает казаться, что мне придется переместить обработку аргументов в основную логику.
Ниже показано, как это написано сейчас, но это не работает:
processArgs() { while getopts j:f: arg do echo "${arg} -- ${OPTARG}" case "${arg}" in j) if [ -z "${filename}" ]; then job_number=$OPTARG else echo "Filename ${filename} already set." echo "Job number ${OPTARG} will be ignored. fi;; f) if [ -z "${job_number}" ]; then filename=$OPTARG else echo "Job number ${job_number} already set." echo "Filename ${OPTARG} will be ignored." fi;; esac done } doStuff1 processArgs doStuff2
Можно ли возможно определить функцию таким образом, что он может читать сценарии арг? Можно ли это сделать другим путем? Мне нравится функциональность getopts, но похоже, что в этом случае мне придется пожертвовать красотой кода, чтобы получить его.
Я также рекомендую использовать `local OPTIND` внутри функции для предотвращения ошибок, когда optargs вызывается более одного раза из-за вызываемой функции несколько раз. – 2012-01-09 16:28:50