Shell

在遠端主機上執行命令失敗

  • November 11, 2013

我正在嘗試在遠端主機上執行一些命令,如下所示:

ssh -t -t -l user 172.20.20.20 <<EOF
 pid=$(ps -ef | grep [a]pp-management | awk '{print $2}') && kill -9 $pid && rm -rf CI/*
EOF

發生的情況是我仍然在遠端伺服器上登錄並且沒有執行 kill :

user@ubuntu:~$ pid= && kill -9  && rm -rf CI/*
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]

都沒有rm被執行,我做錯了什麼?

我看到沒有任何東西可以傳遞給 kill -9 命令,這是為什麼呢?

$在生成作為輸入傳遞給ssh命令的字元串之前,heredoc 中由符號引入的擴展在本地進行評估。

為避免這種情況,請轉義 heredoc 中的命令,例如用引號引起來EOF

ssh ... <<"EOF"

引用自:https://unix.stackexchange.com/questions/100761