我有一个类似下面的脚本
sshpass -p "pwd" ssh -tt user@host << EOF
cd /directory
file=$(ls -1t| head -1)
exit
EOF
cd /directory
正在shell中成功更改目录。但是ls
给出了shell之外的结果。 ls
的结果与在ssh
之外执行的结果相同。请帮助。
答案 0 :(得分:3)
外壳正在评估$(...)
部分。您可以通过引用'EOF'
来禁用此功能,以便将$(...)
传递给远程shell。它类似于使用单引号而不是带有常规字符串的双引号。
sshpass -p "pwd" ssh -tt user@host << 'EOF'
cd /directory
file=$(ls -1t| head -1)
exit
EOF