远程服务器上的 Bash 脚本 SSH 命令未按预期执行



所以我有一个bash脚本,我想在其中通过SSH连接到我的一个远程服务器并运行一些命令。这是我的代码:

MYFUNCTION="
function my_function
{
    VAR=$(readlink -f current | sed 's/[^)
}
my_function
"
ssh -l ${USERNAME} ${HOSTNAME} "${MYFUNCTION}"

问题是 VAR 变量没有按预期填充命令输出。我自己运行了完全相同的命令,并且得到了所需的输出,但是在 bash 脚本中通过 SSH 执行此操作时,它无法按预期工作。我在这里做错了什么?

您将代码放在双引号中,因此变量和命令在本地计算机上执行。echo "$MYFUNCTION"做,你可能会感到惊讶。

尝试使用此处引用的文档:

# Note the single quotes in the next line
ssh -l "$USERNAME" "$HOSTNAME" <<'END_CODE'
function my_function
{
    cd www
    VAR=$(readlink -f current | sed 's/[^0-9]*//g')
    VAR2=$(find . -maxdepth 1 ! -newer "$VAR" ! -name "$VAR"| sort | sed '$!d')
}
my_function
END_CODE

另请注意所有引用的变量。

最新更新