在用户提示符中使用多行ssh命令检查Shell错误

时间:2017-06-15 14:17:20

标签: linux bash shell ssh

在尝试添加用户提示时检查到已经有效的现有脚本时遇到一些问题。

以下是现有脚本,正常工作 ...

#!/bin/sh

echo "**** Pulling changes into Production"

ssh user@example.com "$( cat <<'EOT'
    cd example.com/html/ || exit
    unset GIT_DIR
    git pull
EOT
)"

以下是我修改后的脚本,其中包含已损坏的用户提示,并且仅在添加ssh行时才会中断。与回声完美配合。

#!/usr/bin/env bash
while true; do
    read -p "Are you sure you want to pull changes into production? [y/N] " yn
    case $yn in
        [Yy]* ) 
            ssh user@example.com "$( cat <<'EOT'
                cd example.com/html/ || exit
                unset GIT_DIR
                git pull
                EOT
            )"; 
            exit;;
        [Nn]* ) 
            echo "!!!! CANCELLING !!!!"; 
            exit;;
        * ) echo "Please answer yes or no.";;
    esac
done

我得到的错误是......

Syntax error: end of file unexpected (expecting ")")

1 个答案:

答案 0 :(得分:2)

EOT必须出现在该行的开头。你的EOT出现在两者之间,有很多前导空格。

替换

                EOT

通过

EOT