Что такое EOF!! в bash-скрипт?
есть команда, которую я не понимаю:
custom_command << EOF!!
Я хочу спросить, что EOF!! это в bash-скрипт. Я нашел EOF с google, но google будет игнорировать "!!- автоматически, так что я не могу найти ЭОФ!!.
Я знаю конец маркера файла, но я точно не знаю, что это значит с "!!"в сценарии. Это знак, чтобы заставить что-то сделать что-то вроде wq vim! ?
плюс, почему и когда мы должны использовать EOF!! вместо EOF?
5 ответов
в командной строке !!
будет расширен до последней выполненной команды. 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
вы можете использовать любую строку как идентификатор.
EOF!!
Это то, что человек, пишущий сценарий, решил использовать.
это, вероятно, просто странно heredoc.
пример:
cat << EOF!!
blabla
EOF!!
Примечание: это работает только в файлах скриптов. Синтаксический анализатор командной строки интерпретирует !!
.
как уже писали другие, это здесь-документ.
маркер, используемый для этого, должен быть выбран тщательно; как вероятность того, что здесь-документ содержит EOF!!
меньше, чем EOF
сам, они выбрали это.
Я полагаю, они проверили, что это не повредит, прежде чем использовать его;!!
в скрипте не ссылается на историю, но она остается как есть.
руководство bash списки под "целеуказатели мероприятия", говорят:
!!
обратитесь к предыдущей команде. Это синоним !-1`.
Я просто искал "bash ручное двойное восклицание".