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