ksh变量值未打印

时间:2014-03-15 03:33:49

标签: shell ksh

我正在尝试运行以下脚本,但不会打印变量$user的值。有人可以解释一下吗?

#!/usr/bin/ksh -x

x=`tty`
at -k now <<end
        user=Bill
        echo $user >> $x
end

2 个答案:

答案 0 :(得分:2)

您无法在heredoc中设置变量。你可以这样做:

x=`tty`
user=Bill

at -k now <<end
   echo $user >> $x
end

答案 1 :(得分:1)

问题是当结束标记没有引用时,变量会在这里的文档中扩展。

这意味着您传递给at的命令是:

user=Bill
echo >> /dev/pts/4

如果引用结束标记,即

at -k now << 'end'
        user=Bill
        echo $user >> $x
end

然后您传递给at的是

user=Bill
echo $user >> $x

在这种情况下,$userat调用的shell设置并展开,并会按预期展开。

请注意,在这种情况下,必须导出$x,否则at不会看到它,不会将其包含在被调用shell的环境中。