此命令 tee

此命令 tee

我看到了以下命令:

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

连字符 (‐) 有何用途?即使我删除连字符它也能正常工作。

答案1

连字符/破折号用于告诉 shell 从此处文档中删除任何前导制表符。这是有记录的通过 POSIX作为此处文档重定向的一部分:

如果重定向运算符是,则应从输入行和包含尾随定界符的行中去除<<-所有前导字符。 <tab>[...]

该功能允许创建稍微漂亮的脚本:

while some-condition; do

    some-command <<-END_INPUT
    some data
    goes here
    END_INPUT

done

(此处文档中的每一行和包含END_INPUT分隔符的行都使用制表符缩进),而不是

while some-condition; do

    some-command <<END_INPUT
some data
goes here
END_INPUT

done

相关内容