4

我正在编写一个脚本来通过 sftp 传输一些文件。我想通过使用 sshfs 挂载目录来将传输作为本地传输进行,因为它可以更轻松地创建所需的目录结构。我遇到的问题是我不确定如何处理没有网络连接的情况。基本上我需要一种方法来判断 sshfs 命令是否失败。如果无法挂载远程目录,有什么想法可以使脚本退出吗?

4

2 回答 2

6

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

sshfs user@host:dir mountpoint || exit 1

上面的工作是因为在 bash 中逻辑或||执行短路评估。允许您打印错误消息的更好的解决方案如下:

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

编辑:

我要指出,这是您在大多数平台上检查几乎所有表现良好的应用程序是否成功的方式。– Sparr 1 分钟前

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

于 2009-05-18T23:53:06.843 回答
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
于 2013-05-10T20:45:32.263 回答