ssh в сценарии с 'командой' вместо “команды”

set revert-all-at-newline on

(помните, что [112756]wc -c[112757] считает байты, а не символы:

)[112420].

1
13.04.2017, 15:36
2 ответа

Я думаю, что вы пытаетесь спросить, - это то, как смешивать и сопоставлять переменные, которые многое оцениваются локально с теми, которые должны быть оценены удаленно.

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

Другой вариант для действительно короткого сегмента состоит в том, чтобы смешивать свои цитаты, как это:

FRUIT=apples
ssh machine2 "echo Eating $FRUIT "'on $HOSTNAME'

переменные в двойном котируемом сегменте будут оцениваться локально (до того, как выполняется SSH ). Все в односмысленном сегменте будет рассматриваться как буквальный. Две цитируемые струны будут объединены для создания строки Echo, употребляющих яблоки на имя хоста $ , и результат, передаваемый в качестве буквального, которое будет оценено удаленно.

2
27.01.2020, 23:27

Вы можете увидеть для себя:

[user@bluepc ~]$ echo "$HOSTNAME;"
bluepc;
[user@bluepc ~]$ echo '$HOSTNAME;'
$HOSTNAME;

Переменные среды в пределах одной цитаты рассматриваются как строки.

В случае SSH, если вы используете двойные кавычки:

  • строка замещена на локальном сервере.
  • Команда выполнена удаленно.

Если вы используете отдельные кавычки:

  • Строка пропускается как таковой на удаленный сервер.
  • Замена возникает удаленно
  • Команда выполнена
1
27.01.2020, 23:27

Теги

Похожие вопросы