[
на самом деле является командой, эквивалентной (почти, см. ниже) команде test
. Это не часть синтаксиса оболочки. (И [
, и test
, в зависимости от оболочки, часто также являются встроенными командами, но это не влияет на их поведение, за исключением, возможно, производительности.)
Оператор if
выполняет команду и выполняет часть then
, если команда выполнена успешно, или часть else
(если есть), если она терпит неудачу. (Команда завершается успешно, если она завершается со статусом ($?
) 0, завершается ошибкой, если завершается с ненулевым статусом.)
In
if [ "$name" = 'Bob' ]; then ...
команда
[ "$name" = 'Bob' ]
(Вы можете выполнить эту же команду напрямую, без if
.)
In
if grep -q "$text" $file ; then ...
команда
grep -q "$text" $file
man [
или man test
для получения дополнительной информации.
СНОСКА. Команда [
почти эквивалентна команде test
. Разница в том, что [
требует ]
в качестве последнего аргумента, а test
нет -- и фактически не позволяет этого (точнее, test
не обрабатывает аргумент ]
специально; например, это может быть допустимое имя файла) . (Это не должно было должно реализовываться таким образом, но [
без соответствующего ]
заставило бы многих очень нервничать.)
person
Keith Thompson
schedule
19.01.2012
help '['
- person Dennis Williamson   schedule 20.01.2012