#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}"
Ваша читаемость там действительно страдает. Я бы дважды подумал о том, чтобы собрать все это вместе.