[
фактически является командой, эквивалентной (почти, см. Ниже) команде test
.Это не часть синтаксиса оболочки.(И [
, и test
, в зависимости от оболочки, также часто являются встроенными командами, но это не влияет на их поведение, за исключением, возможно, производительности.)
Оператор if
выполняет команду и выполняет часть then
, если команда выполняется успешно, или часть else
(если есть), если она не выполняется.(Команда завершается успешно, если она завершается с состоянием ($?
), равным 0, не выполняется, если она завершается с ненулевым состоянием.)
В
if [ "$name" = 'Bob' ]; then ...
команда имеет вид
[ "$name" = 'Bob' ]
(Вы можете выполнить эту же команду напрямую, без if
.)
В
if grep -q "$text" $file ; then ...
команда
grep -q "$text" $file
man [
или man test
для получения дополнительной информации.
ПРИМЕЧАНИЕ: Ну, команда [
почти эквивалентна команде test
.Разница в том, что [
требует ]
в качестве последнего аргумента, а test
- и фактически не позволяет этого.(У него не было , который должен быть реализован таким образом, но [
без соответствующего ]
заставило бы многих людей очень сильно нервничать.)