У меня есть сценарий оболочки, который содержит следующее:
case $1 in
0 )
echo $1 = 0;
OUTPUT=3;;
1 )
echo $1 = 1;
OUTPUT=4;;
2 )
echo $1 = 2;
OUTPUT=4;;
esac
HID=$2;
BUNCH=16;
LR=.008;
Точки с запятой в приведенном выше фрагменте совершенно излишни? И есть ли причина, по которой некоторые люди используют двойную точку с запятой?
Похоже, что точка с запятой - это только разделитель, который вы бы использовали вместо новой строки.
По данным
man bash
:Таким образом, это
;
может быть метасимвол или управляющий оператор, а;;
всегда - управляющий оператор (в случае команды).В вашем конкретном коде все
;
в конце строки не нужны. Однако;;
необходимо.источник
;
и;;
? Я недостаточно знаком с синтаксическим анализом BASH, чтобы понимать практическую разницу между тем, что BASH называет «метасимволом», и тем, что он называет «оператором управления».В особом случае find
;
используется для завершения команд, вызываемых -exec. Смотрите ответ @kenorb на этот вопрос .источник
@ Opensourcebook-Amit
новые строки эквивалентны одиночной точке с запятой
;
в терминале или в сценарии оболочки.См. Примеры ниже:
На терминале:
В сценарии оболочки:
Но я не согласен с комментарием, который
&
эквивалентен новой строке или одной точке с запятой.&
запускает команды в фоновом режиме также как разделитель команд, но не работает как точка с запятой или новая строка.источник
@ Игнасио Васкес-Абрамс
На самом деле это не совсем точно, точки с запятой в конце строки не являются лишними и определенно не то же самое, что новые строки.
Из справочного руководства Bash
Команды, разделенные «новой строкой», могут выполняться параллельно, если команды, разделенные точкой с запятой, всегда выполняются последовательно.
источник
A sequence of one or more newlines may appear in a list to delimit commands, equivalent to a semicolon.
Итак, то, что вы процитировали о точке с запятой, в равной степени применимо к новым строкам.&
не\n
. В комментарии говорится, что он может пропустить точку с запятой, потому что, по-видимому,&
он также является разделителем команд, как;
и\n
.