1

Я пытаюсь использовать для цикла в моем сценарии.

Я SSH на сервер и переехал в соответствующий каталог. Внутри каталога у меня есть несколько файлов.

Я хотел перебрать каждый файл.

файлы начинаются с определенного имени ff

ssh -q server@example.com  << EOF
cd /var/dist/s-test/
NAME=ff
echo ${NAME}*   // this is working

for a in ${NAME}*;  // this is not working
do
echo  $a
done

EOF

1 ответ1

3

Заменить:

ssh -q server@example.com  << EOF

с:

ssh -q server@example.com  <<'EOF'

Это препятствует тому, чтобы оболочка на стороне клиента раскрыла здесь документ. Сценарий все еще будет расширяться на стороне сервера.

Документация

От man bash:

Формат здесь-документов:

          [n]<<[-]word
                  here-document
          delimiter

Для слова не выполняется расширение параметров и переменных, подстановка команд, арифметическое расширение или расширение имени пути. Если какая-либо часть слова заключена в кавычки, разделитель является результатом удаления кавычки для слова, и строки в здесь-документе не раскрываются. Если слово не заключено в кавычки, все строки документа здесь подвергаются расширению параметров, подстановке команд и арифметическому расширению, последовательность символов \ <newline> игнорируется, и \ необходимо использовать для кавычек символов \, $ и ` , [Акцент добавлен]

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