Специальные символы:$@ and--) и *) в getopt bash
vim mytest.sh
1 #!/bin/bash
2
3 ARGS=`getopt -o ab: -l "argv3:,help" -- "$@"`
4 eval set -- "${ARGS}"
5
6 while true;
7 do
8 case "$1" in
9 -a)
10 echo "i am a"
11 shift
12 ;;
13 -b)
14 echo "i am b, my value is $2"
15 shift 2
16 ;;
17 --argv3)
18 echo "i am argv3, my value is $2"
19 shift 2
20 ;;
21 --help)
22 echo "i am help info"
23 exit 0
24 ;;
25 --)
26 shift
27 break
28 ;;
29 *)
30 echo "Internal error!"
31 exit 1
32 ;;
33 esac
34 done
"$@"
расширяется в список отдельных параметров. Что значит-- "$@"
значит в гетопт? Если я изменю 3-ю строку наARGS=`getopt -o ab: -l "argv3:,help"`
какая функция исчезнет для test.sh?
--)
в 25-й строке25 --) 26 shift 27 break 28 ;;
Какой смысл хочет выразить кодер?
*)
в 29-й строкеПри каком условии или по какому аргументу будет выводиться "Внутренняя ошибка!" в терминале?
1 ответ
- Просто соответствует параметру, содержащему два знака минус,
--
,
Редактировать: как упоминалось @axiac, этот параметр обычно имеет особое значение, он обозначает конец параметров команды.
Соответствует параметру выше.
Подстановочный знак, можно рассматривать как
default
вswitch-case
, который будет срабатывать, пока ни один из случаев не совпадает с предыдущим.