if mountpoint -q $1 是如何工作的

if mountpoint -q $1 是如何工作的

我知道挂载点用于确定给定目录是否是挂载点。但是,我不明白的是它和 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并检查退出状态即可,这就是它的用途!

相关内容