我看到了以下bash代码:at 19:00 <<! echo "job 1"
。我有两个问题:
<<!
?我编写了以下脚本代码:
at 19:00 <<!
echo "job 1"
at 20:00 <<!
echo "job 2"
当我执行此脚本时,atq
命令仅显示一个作业,第一个作业。怎么了?我应该如何通过此脚本正确提交这两个作业?
答案 0 :(得分:6)
3.6.6此处文件
这种类型的重定向指示shell从当前源读取输入,直到看到只包含单词(没有尾随空白)的行。然后,读取到该点的所有行都将用作命令的标准输入。
The format of here-documents is:
<<[−]word
here-document
delimiter
所以
word
之后指定任何内容(在您的情况下为!
)at
作业word
的行(在您的情况下再次!
)答案 1 :(得分:5)
Nya解释说,<<!
是here document。
你应该写:
at 19:00 <<!
echo "job 1"
!
at 20:00 <<!
echo "job 2"
!
如果没有以!
开头的行,那么这里的文档就是shell脚本的其余部分,这就是atq
中只有一个命令的原因。 (但是,该命令会在它运行时安排第二个工作!)