2015-11-06 3 views
0

я наткнулся на эту линию в одном из сценариев оболочки:Назначение квадратных скобок в сценариях оболочки

[-f $host_something ] && .$host_something 

Что квадратные скобки с ключом -f предположим делать и какова точка «Андинг 'с той же переменной окружения

Это может быть очень простая функция сценариев оболочки. Но попытка поиска ответа в google была жесткой, поскольку я не мог в достаточной степени объяснить поисковой системе, что я хотел.

+1

Я думаю, что вам не хватает пробелов - один после '[' и один после '.' ... они важны; команда не будет работать без них. – psmears

ответ

0

[ фактически является фактическим двоичным кодом. Это псевдоним для команды test(1). Он будет игнорировать последний аргумент, который должен быть ]. Запустите man test для получения дополнительной информации. Это не синтаксис оболочки.

0

Квадратная скобка действительно является псевдонимом для инструмента test, поэтому вы можете посмотреть man test, чтобы узнать, как это работает. переключатель -f является одним из многих тестов, которые могут запускаться с помощью этого инструмента, и проверяет, существует ли файл и является обычным файлом.

0

Вам нужно еще несколько мест.
Команда

[ -f $host_something ] && . $host_something 

стенды для

if [-f $host_something ]; then 
    source $host_something 
fi 

или в словах:
Когда файл приведен в переменной host_something действительно является файл, а затем выполнить строки в этом файле, не открывая подоболочку , Вам не нужна подоболочка, так как все настройки в подоболочке будут потеряны, как только закончится подоболочка.