我正在尝试运行以下脚本,但不会打印变量$user
的值。有人可以解释一下吗?
#!/usr/bin/ksh -x
x=`tty`
at -k now <<end
user=Bill
echo $user >> $x
end
答案 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
在这种情况下,$user
由at
调用的shell设置并展开,并会按预期展开。
请注意,在这种情况下,必须导出$x
,否则at
不会看到它,不会将其包含在被调用shell的环境中。