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

Я пытаюсь проверить, смонтирован ли том с помощью 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 Ответ

1 голос
/ 09 апреля 2019

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

Так что для Вас должно работать следующее:

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