赫雷多克中没有这样的文件或目录,Bash



我对Bash的Heredoc构造行为深感困惑。

这是我正在做的事情:

#!/bin/bash
user="some_user"
server="some_server"
address="$user"@"$server"
printf -v user_q '%q' "$user"
function run {
    ssh "$address" /bin/bash "$@"
}
run << SSHCONNECTION1
    sudo dpkg-query -W -f='${Status}' nano 2>/dev/null | grep -c "ok installed" > /home/$user_q/check.txt
    softwareInstalled=$(cat /home/$user_q/check.txt)
SSHCONNECTION1

我得到的是

cat:/

home/some_user/check.txt: 没有这样的文件或目录

这很奇怪,因为如果我使用 SSH 连接并检查以下路径,该文件就会存在。

我做错了什么?文件不是可执行文件,只是一个文本文件。谢谢。

如果您希望cat在 heredoc 的评估期间远程运行,而不是在本地运行,请转义$(...)中的$

softwareInstalled=$(cat /home/$user_q/check.txt)

当然,这只有在远程脚本的其他部分引用"$softwareInstalled"时才有意义(或者,因为它在未引用的 heredoc 中,"$softwareInstalled" )。

相关内容

  • 没有找到相关文章

最新更新