我必须在 Bash 脚本中执行以下操作。/虚拟机文件系统/ 文件夹存在于运行脚本的 Linux 机器上,并映射到我正在 ssh 的机器上,作为 /vmfs/volumes/ 处的 NFS虚拟机文件系统/。第二个 cd 命令不起作用,无论是符号路径名还是物理路径名。为什么?如何纠正这个问题?
#!/bin/bash
ssh -2 [email protected] /bin/sh <<\EOF
vmfile_path=`grep / vmvar_file`
datastore_path=/vmfs/volumes/VMNFS/
cd $datastore_path && echo "The present working directory is" `pwd -P`
esxi_vmfile_path_sub=`pwd -P` && echo "variable value is" $esxi_vmfile_path_sub
esxi_vmfile_path=`echo $vmfile_path | sed "s:/VMNFS:$esxi_vmfile_path_sub:"`
cd "$esxi_vmfile_path"
EOF
***Output***:
The current working directory is /vmfs/volumes/65335ec4-46d12e41
variable value is /vmfs/volumes/65335ec4-46d12e41
can't cd to /vmfs/volumes/65335ec4-46d12e41/TPAE7.5/
答案1
在命令行上手动更改目录是否有效?如果不行,可能是因为你没有权限查看该目录。
除此之外,你似乎使用了一种非常复杂的方法来更改目录。
/bin/bash #!/bin/bash SSH-2[电子邮件保护] /bin/sh <<EOF cd“/vmfs/volumes$(grep -m 1/vmvar_file)” 末梢血
此外,您可以考虑对所有变量赋值使用双引号,以防它们导致值带有空格。说到空格,如果您的$esxi_vmfile_path
包含空格,它还可能会尝试更改为错误的目录。
答案2
愚蠢的想法...检查一下 vmar_file 中的路径末尾没有空格