bash检查用户挂载是否失败

时间:2009-05-18 23:48:11

标签: bash sshfs

我正在写一个脚本来通过sftp传输一些文件。我希望通过使用sshfs挂载目录来进行传输作为本地传输,因为它使得创建所需的目录结构变得更加容易。我遇到的问题是我不确定如何处理没有网络连接的情况。基本上我需要一种方法来判断sshfs命令是否失败。如果无法安装远程目录,如何使脚本保释?

2 个答案:

答案 0 :(得分:5)

只测试sshfs是否返回0(成功):

sshfs user@host:dir mountpoint || exit 1

上述方法有效,因为在bash中逻辑 - 或||执行short-circuit evaluation。一个更好的解决方案,允许您打印错误消息如下:

if !( sshfs user@host:dir mountpoint ); then
  echo "Mounting failed!"
  exit 1
fi

修改

  

我想指出,这就是你如何在大多数平台上检查几乎所有表现良好的应用程序的成功。 - Sparr 1分钟前

事实上。详细说明:大多数应用程序在成功时返回0,在失败时返回另一个值。 shell知道这一点,因此将返回值0解释为true,将任何其他值解释为false。因此,逻辑或负面测试(使用感叹号)。

答案 1 :(得分:2)

我试图检查目录是否不是sshfs挂载的挂载点。使用上面的示例失败:

if !( mountpoint -q /my/dir ); then
    echo "/my/dir is not a mountpoint"
else
    echo "/my/dir is a mountpoint"
fi

错误:-bash: !( mountpoint -q /my/dir ): No such file or directory

我用以下内容修改了我的代码并取得了成功:

if (! mountpoint -q /my/dir ); then
    echo "/my/dir is not a mountpoint"
else
    echo "/my/dir is a mountpoint"
fi