在 Linux 脚本中使用变量映射 NFS 卷的 cd 命令不起作用

在 Linux 脚本中使用变量映射 NFS 卷的 cd 命令不起作用

我必须在 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 中的路径末尾没有空格

相关内容