所以我有一个bash脚本,我想在其中一个远程服务器上SSH并运行一些命令。这是我的代码:
MYFUNCTION="
function my_function
{
VAR=$(readlink -f current | sed 's/[^)
}
my_function
"
ssh -l ${USERNAME} ${HOSTNAME} "${MYFUNCTION}"
问题是VAR变量没有正确填充命令输出。我自己运行了完全相同的命令,并获得了所需的输出,但是当在bash脚本中通过SSH进行操作时,它并没有按预期工作。我在这里做错了什么?
答案 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
还要注意所有引用的变量。