Что такое EOF! в bash script?
Есть команда, которую я не понимаю:
custom_command << EOF!!
Я хочу спросить, что такое EOF!! находится в bash script. Я нашел EOF с google, но google проигнорирует "!!" автоматически, поэтому я не могу найти EOF!!.
Я знаю конец токена файла, но я точно не знаю, что значит "!!". в script. Это знак, чтобы заставить что-то сделать, например, в vim wq!
Плюс, зачем и когда мы должны использовать EOF!! вместо EOF?
Ответы
Ответ 1
В командной строке !!
будет расширен до последней выполненной команды. Bash напечатает строку для вас:
$ ls
a.txt b.txt
$ cat <<EOF!!
cat <<EOFls
>
В script расширение истории по умолчанию отключено, поэтому восклицательные знаки являются частью слова.
#! /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
Чтобы включить историю и расширение истории в script, добавьте следующие строки:
set -o history
set -H
Ответ 2
Вы можете использовать любую строку, как здесь, терминатор документа.
EOF!!
- это то, что решил использовать человек, пишущий script.
Ответ 3
Возможно, это просто странный heredoc.
Пример:
cat << EOF!!
blabla
EOF!!
Примечание: это работает только в файлах script. Анализатор командной строки интерпретирует !!
.
Ответ 4
Как уже писали другие, это документ здесь.
Используемый для этого токен должен быть выбран тщательно; поскольку вероятность того, что здесь-документ содержит EOF!!
, меньше, чем для EOF
, они выбрали это.
Я полагаю, они проверяли, что это не наносит вреда, прежде чем использовать его; !!
в script НЕ относится к истории, но он остается таким, как есть.
Ответ 5
Руководство bash перечисляет это под "Обозначения событий" , говоря:
!!
Обратитесь к предыдущей команде. Это синоним для! -1`.
Я просто искал "bash ручное двойное восклицание".