查看名称中的目录/文件是否存在



我想检查路径是文件还是目录。我知道这条路存在。下面的代码只要没有空间在路径中。如何使这项工作用于空间的名称?我目前有一个带有名称的文件,无法检查它是否远程存在。代码读取:

server=<serverip>
path="/var/lib/Fingerprint log.log"
if ssh root@$server test -d $path
then
    echo "Directory"
else
    echo "File"
fi

当我有一个空间的路径时,它会失败

test:/var/lib/指纹:二进制操作员预期

如果路径为/var/lib/指纹log.log

根据大多数评论,您需要使用" $ {path}"而不是$路径。

path="/var/lib/Fingerprint log.log"
ssh root@$server test -d $path

简短的答案是您应该像这样运行SSH:

ssh root@$server test -d "'$path'"
or
ssh root@$server "test -d '$path'"

双引号确保在本地系统上扩展了$path变量,并且单引号传递到远程系统。单引号确保$path的值仍被视为远程系统上的单个命令行参数。

这是由于SSH如何处理命令行上指定的远程命令。首先,它将所有相关的命令行参数连接到单个空格分隔字符串中。然后,它将该字符串发送到远程系统,并以shell命令运行。

例如:

$ dne='/var/does not exist'
$ ssh localhost ls $dne
ls: cannot access /var/does: No such file or directory
ls: cannot access not: No such file or directory
ls: cannot access exist: No such file or directory
$ ssh localhost ls "$dne"
ls: cannot access /var/does: No such file or directory
ls: cannot access not: No such file or directory
ls: cannot access exist: No such file or directory
$ ssh localhost ls "'$dne'"
ls: cannot access /var/does not exist: No such file or directory

相关内容

  • 没有找到相关文章

最新更新