我正在尝试在远程主机上执行一些命令,如下所示:
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
发生的情况是我在远程服务器上保持登录状态并且杀死没有执行:
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 命令,这是为什么?
答案1
$
在生成作为命令的输入传递的字符串之前,在本地评估由定界文档中的符号引入的扩展ssh
。
为了避免这种情况,请转义定界文档中的命令,例如使用引号EOF
ssh ... <<"EOF"