Синтаксис выражения с помощью команды if, использующей фигурные скобки в csh

#bash #syntax #csh

#bash #синтаксис #csh

Вопрос:

Я пытаюсь проверить, смонтирован ли том с помощью скрипта csh.

Этот код работает

 #!/bin/csh
set MOUNT_FOLDER = "/Volumes/AAA"
if ( `mount | grep -c "on $MOUNT_FOLDER"` == 0 ) then
    echo Not mounted
else
    echo Mounted
endif
  

но я хотел бы попробовать использовать синтаксис с { } и кодом выхода grep . Я пробовал с

 if ( { mount | grep -q "on $MOUNT_FOLDER" } ) then
...
  

но он выводит mount выходные данные, и это независимо от значения $MOUNT_FOLDER выражения всегда true .

Комментарии:

1. csh или bash ?

2. Меня интересует csh. У меня есть рабочая версия использования bash.

Ответ №1:

В отличие от bash , если вы передали команды в csh и хотите получить статус завершения команды, вам необходимо инкапсулировать во вложенную оболочку ( ... | ... )

Итак, следующее должно сработать для вас:

 if ( { ( mount | grep -q "on $MOUNT_FOLDER" ) } ) then
...
  

Комментарии:

1. Синтаксис в порядке. Единственное, что мне нужно изменить, это поместить ! в начале if ( ! { ( mount | grep -q "on $MOUNT_FOLDER" ) } ) then . Спасибо