在 csh 中使用花括号的 if 命令的表达式语法

Expression syntax with if command using curly braces in 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.

bash不同,如果您在csh中有管道命令并且想要获取命令退出状态您需要封装在sub-shell ( ... | ... )

因此以下内容应该适合您:

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