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

时间:2018-04-10 19:38:20

标签: bash ssh

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

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

ssh -l ${USERNAME} ${HOSTNAME} "${MYFUNCTION}"

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

1 个答案:

答案 0 :(得分:0)

您将代码放在双引号中,因此变量和命令正在本地计算机上执行。做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

还要注意所有引用的变量。