2013-12-15 4 views
0

Я только что начал писать сценарии оболочки. В конструкциях if есть if, считающийся командой или ключевым словом?«If» Construct in Unix Scripting

Если это команда, ее путь должен быть указан при поиске по команде which. На самом деле which ничего не нашел.

Если if не является командой, то в идеале ее не нужно разделять точкой с запятой, когда then написан в той же строке.

Может ли кто-нибудь из вас объяснить, является ли if командой или инструкцией?

+0

Это не может быть внешняя команда, поскольку она должна влиять на поведение команд и операторов, которые появляются после нее в скрипте, а также должна совпадать с ключевым словом 'fi'. – Barmar

ответ

0

if не является командованием, это конструкция оболочки.

Запятой ; состояние после синтаксис оболочки прекратить состояние и требуется только тогда, когда then ключевое слово находится на той же линии. ; не является обязательным, если на следующей строке отображается ключевое слово then.

Так что это будет также работать без запятой и печати даты:

if ((RANDOM>0)) 
then 
    date 
fi 
1

В bashif является составной командой (см «Shell грамматика» в связанной странице.)

+0

Да! Пожалуйста, прочитайте страницу пользователя bash. В нем много информации о сценариях. –

+0

Также обратите внимание на функции bash, которые являются расширениями, превышающими возможности POSIX 'sh' (Bourne Shell) и отмечают ваши скрипты как скрипты' #!/Bin/bash', если они требуют таких функций. –

+0

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_04_07 –

0

if это ключевое слово. Полуколона завершает команду, которая находится между if и then.