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