Here-Document

此命令 tee <<-‘EOF’ 中使用的連字元 (‐) 是什麼?

  • July 15, 2019

我看到了以下命令:

sudo tee /etc/docker/daemon.json &lt;&lt;-'EOF'
{
 "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}
EOF

連字元 (‐) 是做什麼用的?即使我刪除連字元,它也能正常工作。

連字元/破折號用於告訴外殼從此處文件中刪除任何前導製表符。這由 POSIX記錄為 here-document 重定向的一部分:

如果重定向運算符是,則應從輸入行和包含尾隨分隔符的行中去除&lt;&lt;-所有前導字元。&lt;tab&gt;

$$ … $$

該功能允許創建更漂亮的腳本:

while some-condition; do

   some-command &lt;&lt;-END_INPUT
   some data
   goes here
   END_INPUT

done

(此處文件中的每一行和包含END_INPUT分隔符的行都使用製表符縮進),而不是

while some-condition; do

   some-command &lt;&lt;END_INPUT
some data
goes here
END_INPUT

done

引用自:https://unix.stackexchange.com/questions/530198