13

私が理解していないコマンドがあります:

custom_command << EOF!!

私は何EOFを聞きたいです!! はbashスクリプトにあります。GoogleでEOFを見つけましたが、Googleは「!!」を無視します 自動的に、EOF !! を見つけることができません。

ファイルトークンの終わりは知っていますが、「!!」が何を意味するのか正確にはわかりません。スクリプトで。これは、vim の wq のように何かを強制するためのマークですか! ?

さらに、なぜ、いつ EOF を使用する必要があるのか​​ !! EOFの代わりに?

4

5 に答える 5

16

コマンド ラインで!!は、最後に実行されたコマンドに展開されます。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
于 2013-08-30T07:33:27.150 に答える
1

それはおそらくただの奇妙なヒアドキュメントです。

例:

cat << EOF!!
blabla
EOF!!

注: これはスクリプト ファイルでのみ機能します。コマンド ライン パーサーが解釈し!!ます。

于 2013-08-30T07:52:36.910 に答える