Специальные символы: $ @ and--) и *) в getopt bash - PullRequest
0 голосов
/ 11 июня 2018
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
  1. "$@" расширяется в список отдельных параметров.Что означает -- "$@" в getopt?Если я изменю 3-ю строку на

    ARGS=`getopt -o ab: -l "argv3:,help"`
    

, эта функция исчезнет для test.sh?

--) в 25-й строке

 25         --)
 26             shift
 27             break
 28             ;;

Какое значение хочет выразить кодер?

*) в 29-й строке

В зависимости от того, какое условие или какой аргумент вызовут вывод «Внутренняя ошибка!»в терминале?

1 Ответ

0 голосов
/ 11 июня 2018
  1. Просто соответствует параметру, содержащему два знака минуса, --.

Редактировать: как упоминалось @axiac, этот параметр обычно имеет особое значение, он обозначаетопции конца команды .

Соответствует вышеуказанному параметру.

Подстановочный знак , может рассматриваться как default в switch-case, который будет срабатывать при отсутствиислучаи совпадают в предыдущем.

...