Избегайте разделения строк при передаче аргументов по sshLinux

Ответить Пред. темаСлед. тема
Anonymous
 Избегайте разделения строк при передаче аргументов по ssh

Сообщение Anonymous »


Чтобы запустить распределенные вычисления, я написал сценарий запуска, который использует ssh для входа на удаленный компьютер и запуска сценария, который считывается из стандартного ввода. Однако этот сценарий запуска должен правильно передать предоставленные пользователем аргументы из $@ на удаленный компьютер. Однако я заметил, что аргументы передаются неправильно.

Предположим, сценарий task.sh, который должен выполнить удаленный компьютер,

i=0 для p в "$@"; делать echo "#${i}: ${p}" я = $((я+1)) сделанный Этот скрипт просто перебирает аргументы и печатает их построчно, например:

$ bash Task.sh привет мир 'в одну строку' №0: привет №1: мир №2: в одну строку Мой упрощенный сценарий запуска run.sh теперь выглядит следующим образом:

ssh user@remote.example.com "bash -s $@" < Task.sh Однако это напечатает:

$ bash run.sh hello world 'в одну строку' №0: привет №1: мир #2: в №3: один № 4: линия Когда я цитирую $@ с помощью ', т.е.

ssh user@remote.example.com "bash -s '$@'" < Task.sh печатается следующее:

$ bash run.sh hello world 'в одну строку' #0: привет, мир, в одну строку Может быть, это работает, когда я использую массив в run.sh?

ARGS=(bash -s "$@") ssh user@remote.example.com "${ARGS[@]}" < Task.sh Нет, он также печатает в одну строку в несколько строк.

При добавлении дополнительных одинарных кавычек вокруг ${ARGS[@] ssh интерпретирует его как одну команду и сообщает: bash: bash -s hello world в одну строку: команда не найдена.

Итак, как правильно передать аргументы в ssh, чтобы они правильно разделились? Я думаю, это, вероятно, работает с переменными среды, но могу ли я заставить его работать и без них?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»