首页 > 解决方案 > 在 csh 中使用大括号的 if 命令的表达式语法

问题描述

我正在尝试检查是否使用 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.

标签: bashsyntaxcsh

解决方案


与 in 不同bash,如果您有管道命令csh并想要获取命令退出状态您需要封装在子外壳中( ... | ... )

所以以下应该对你有用:

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

推荐阅读