bash - 在 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
.
解决方案
与 in 不同bash
,如果您有管道命令csh
并想要获取命令退出状态您需要封装在子外壳中( ... | ... )
所以以下应该对你有用:
if ( { ( mount | grep -q "on $MOUNT_FOLDER" ) } ) then
...
推荐阅读
- c# - NETSDK1061:使用 Microsoft.AspNetCore.All 版本 2.0.5 恢复项目,但使用当前设置,将使用 2.0.4 版本
- javascript - 我已经使用 javascript /firebase 构建了应用程序,并希望它返回最后 5 次搜索并使每个搜索都可点击
- node.js - 无法使用 Heroku 的环境变量连接到 MongoDB
- java - Maven 无法识别 Java 项目中的某些 Kotlin 类
- python - `getwch` 返回的键码是什么?
- java - 如何使用 contextClick() 单击右键单击后显示的选项?
- postgresql - 如何在 PostgreSQL 中合并表?
- cucumber - Karate test framework: Only one assert using Examples
- python - 消息框 tkinter 的问题
- angular - Mat-Dialog 中的 Mat-Table 未更新