Я должен сделать следующее из скрипта bash. Папка/ VMNFS/ находится в linux, откуда запускается скрипт, и отображается на машине, на которой я работаю, как NFS, в / vmfs / volume / VMNFS/. Вторая команда cd не работает ни с символическим, ни с физическим путем. Зачем? и как это исправить?

#!/bin/bash
ssh -2 root@9.124.119.17  /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/

2 ответа2

0

Глупая мысль ... проверьте, чтобы у вас не было пробелов в конце пути в файле vmar_file

0

Работает ли это, когда вы вручную меняете каталог в командной строке? Если нет, возможно, у вас просто нет прав для просмотра этого каталога.

Кроме этого, кажется, что вы используете невероятно сложный способ изменить каталог. Что случилось с

#!/bin/bash
ssh -2 root@9.124.119.17  /bin/sh  <<EOF
cd "/vmfs/volumes$(grep -m 1 / vmvar_file)"
EOF

Кроме того, вы можете рассмотреть возможность двойных кавычек для всех назначений переменных, если они приводят к значениям с пробелами. Говоря о пробелах , если ваш $esxi_vmfile_path содержит пробелы, он также может попытаться перейти в неправильный каталог.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .