Heredoc用于bash中的嵌套命令

时间:2014-11-19 08:32:48

标签: bash ssh nested heredoc

我需要ssh到一台机器并在sudo bash下执行一堆命令。这是我尝试过的:

sshpass -p "vagrant" ssh vagrant@33.33.33.100 "sudo bash -i -c <<EOF
    echo
    ls
    echo
EOF"

但它让我'bash: -c: option requires an argument\n'。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

您需要从命令行中删除-c以使其接受heredoc:

sshpass -p "vagrant" ssh vagrant@33.33.33.100 "sudo bash <<EOF
    echo
    ls
    echo
EOF"

您也可以删除-i(互动)选项。

bash -c希望您在命令行上提供所有命令,这样也可以这样做:

sshpass -p "vagrant" ssh vagrant@33.33.33.100 "sudo bash -c 'echo; ls; echo'"