Я хотел бы передать параметры в качестве параметра. Например.:
mycommand -a 1 -t '-q -w 111'
Скрипт не может распознать строку в кавычках. То есть он получает только часть строки.
getopts
работает так же - видит только -q
.
Для пользовательских getopts я использую аналогичный скрипт (пример):
while :
do
case $1 in
-h | --help | -\?)
# Show some help
;;
-p | --project)
PROJECT="$2"
shift 2
;;
-*)
printf >&2 'WARN: Unknown option (ignored): %s\n' "$1"
shift
;;
*) # no more options. Stop while loop
break
;;
--) # End of all options
echo "End of all options"
shift
break
;;
esac
done
'-q -w 111'
? Так же, как если бы это не цитировалось? - person chepner   schedule 19.06.2015anotherscript $customOptions
- person Kirby   schedule 19.06.2015getopts
нет-t
...? - person anishsane   schedule 19.06.2015set - $@
в начале - person 123   schedule 19.06.2015$@
без кавычек; вы теряете информацию о том, какие аргументы могли содержать пробелы. - person chepner   schedule 19.06.2015"$@"
сохраняет различие между-q "foo bar"
и-q foo bar
. - person chepner   schedule 26.06.2015The same as if it weren't quoted?
я указал способ, при котором это было бы так же, как если бы оно не было в кавычках. - person 123   schedule 26.06.2015