Я пытаюсь создать сценарий с несколькими вариантами. Я начал с документа, получил несколько ошибок, зашел в браузер. Прочитайте несколько ссылок и найдите это на SO: Использование getopts в сценарии оболочки bash для получения длинных и коротких параметров командной строки.
Поэтому я прочитал его и переписал свой сценарий. Я где-то ошибся. Где я ошибаюсь?
Ш
#!/bin/sh
TEMP=`getopt -o vfts: --long verbose,format,type,style: \
-n 'opt2' -- "$@"`
if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
eval set -- "$TEMP"
VERBOSE=false
FORMAT=
TYPE=
STYLE=
while true; do
case "$1" in
-v | --verbose ) VERBOSE=true; shift ;;
-f | --format ) FORMAT="$2"; shift 2 ;;
-t | --type ) TYPE="$2"; shift 2 ;;
-s | --style ) STYLE="$2"; shift 2 ;;
-- ) shift; break ;;
-*) break ;;
* ) break ;;
esac
done
echo "verbose = $VERBOSE"
echo "format = $FORMAT"
echo "type = $TYPE"
echo "style = $STYLE"
Вывод
> ./opt2.sh -v -f fofo -t toto -s soso
verbose = true // ok
format = -t // should be fofo
type = // should be toto
style = soso // ok
sh -x ./opt2.sh .....
- person KevinDTimm   schedule 17.03.2014-x
, о котором говорил Кевин, не означает выполнение, он устанавливает параметр оболочки xtrace, который приводит к выводу каждого оператора, выполняемого сценарием оболочки, на консоль. Таким образом, вы можете увидеть, где ваш сценарий идет не так. - person wich   schedule 17.03.2014