Как установить аргументы после heredoc в Bash

#bash

#bash

Вопрос:

Я хотел бы изменить следующий скрипт на

 tmp=$(cat <<'EOT'
ssh user@sv7247.xserver.jp
EOT
)
expecto "${tmp}" "${PASSWORD}"
  

нравится следующий скрипт, потому что я просто хочу сократить скрипт.

 expecto "$(cat <<'EOT' "${PASSWORD}"
ssh user@sv7247.xserver.jp
EOT
)"
  

Однако закороченный скрипт не работает. Похоже, что это вызвано вторым аргументом "${PASSWORD}" , который не распознается.

Каков правильный способ сделать это?

Комментарии:

1. Вы передаете пароль cat , а не expecto . Хотя документ here на самом деле не начинается до следующей строки, сама подстановка команды продолжается до закрытия ) .

2. Мы предполагаем, что ваш реальный код длиннее, поскольку в противном случае вы бы просто написали expecto "ssh user@sv7247.xserver.jp" "$PASSWORD"

Ответ №1:

Вы бы написали:

 expecto "$(cat <<'EOT'
ssh user@sv7247.xserver.jp
EOT
)" "${PASSWORD}"
  

Ваша читаемость там действительно страдает. Я бы дважды подумал о том, чтобы собрать все это вместе.