有一个我不明白的命令:
custom_command << EOF!!
我想问一下EOF !!在bash脚本中。我确实找到了谷歌的EOF,但谷歌将忽略“!!”自动,所以我找不到EOF !!
我知道文件令牌的结束,但我不知道“!!”的意思在脚本中。这是一个标记强迫某事做像vim的wq! ?
另外,为什么以及何时应该使用EOF !!而不是EOF?
答案 0 :(得分:15)
在命令行上,!!
将扩展为最后执行的命令。 Bash将为您打印该行:
$ ls
a.txt b.txt
$ cat <<EOF!!
cat <<EOFls
>
但是,在脚本中,默认情况下禁用历史记录扩展,因此感叹号是该单词的一部分。
#! /bin/bash
ls
cat <<EOF!!
echo 1
EOFls
echo 2
产地:
a.txt b.txt
script.sh: line 7: warning: here-document at line 3 delimited by end-of-file (wanted `EOF!!')
echo 1
EOFls
echo 2
要在脚本中启用历史记录和历史记录扩展,请添加以下行:
set -o history
set -H
答案 1 :(得分:4)
您可以使用任何字符串作为此文档终止符。
EOF!!
正是编写剧本的人决定使用的。
答案 2 :(得分:1)
答案 3 :(得分:0)
正如其他人已经写过的那样,这是一份文件。
应谨慎选择用于此的令牌;由于here-document包含EOF!!
的概率低于EOF
本身,他们选择了这个概率。
我认为他们在使用之前检查过它没有伤害;脚本中的!!
不会引用历史记录,但会保持原样。
答案 4 :(得分:-1)
The bash manual在"Event designators"下列出了这一点,并说:
!!
请参阅上一个命令。这是!-1`。
的同义词
我只是搜索“bash manual double exclamation”。