Если я попытаюсь запустить a;;b
sh, то получу следующую ошибку:
sh: <number>: Syntax error: ";;" unexpected
Если я попробую, a;;;b
то получу ту же ошибку, а не ;;;
вместо ;;
, так что я думаю, что это ;;
что-то значит, хотя я и не знаю, что именно.
Вот пример:
$ echo A;;echo B
sh: 1: Syntax error: ";;" unexpected
$ echo A;;;echo B
sh: 1: Syntax error: ";;" unexpected
$ echo A; ;echo B
sh: 1: Syntax error: ";" unexpected
Здесь вы можете видеть, что когда я использую ; ;
вместо , ;;
ошибка другая, относящаяся к тому факту, что я использовал ;
without ранее команду. ;;
похоже, это другой оператор, хотя я не знаю, к чему он относится.
решение1
;;
разделяет операторы в конструкции case
... esac
в оболочках POSIX:
case foo in (a) cmd1; cmd2 ;; (b) cmd3; cmd4; esac
Чтобы узнать о команде, вы можете запустить man that-command
. Если ваш пейджер — less
, вы можете выполнить поиск на странице руководства, нажав /.
Здесь вы бы запустили man sh
и нашли ;;
. Некоторые оболочки поддерживают другие операторы для разделения case
операторов (например, ;&
in ksh93
/ zsh
/ bash
/ mksh
, &|
in zsh
/ mksh
, ;;&
in bash
).