我知道挂载点用于确定给定目录是否是挂载点。但是,我不明白的是它和 if 语句的组合。
我测试了网上的一段代码:
#!/bin/bash
if mountpoint -q $1; then
echo "$1 is mounted"
else
echo "$1 isn't mounted"
fi
有用!但我不确定它是如何工作的(特别是 -q 意味着保持安静)。我尝试将条件放入一对双方括号中:
if [[ mountpoint -q $1 ]]; then ...
但这不起作用。那么我想问一下,让这个if语句起作用的内部机制是什么?
答案1
该mountpoint
命令将退出并显示状态如果目录或文件是挂载点则为零,如果不是则非零。
这就是该if
命令正在检查的内容。命令是否成功退出(零状态)或失败(非零状态)(与是否有输出无关)
解释最后一部分......该[[ ... ]]
构造将检查是否有字符串,但在这种情况下,您需要使用类似的东西捕获输出[[ $(mountpoint $1) ]]
,但只有当命令仅在该命令中打印输出时,类似的东西才有效案例,所以这样的事情会更现实[[ $(mountpoint $1 | grep 'is a mountpoint') ]]
。但这是较差的...直接使用-q
并检查退出状态即可,这就是它的用途!