所以我有一个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
另请注意所有引用的变量。