壳牌扩张与heredoc

Lig*_*art 3 bash

对于所有命令,如何在heredoc中进行子shell扩展?

例如:

file=report_$(date +%Y%m%d)
cat <<EOF > $file
    date
    hostname
    echo 'End of Report'
EOF
Run Code Online (Sandbox Code Playgroud)

以便评估所有命令?

我知道

file=report_$(date +%Y%m%d)
cat <<EOF > $file
    $(date))
    $(hostname)
    $(echo 'End of Report')
EOF
Run Code Online (Sandbox Code Playgroud)

会工作,但有没有办法默认指定子shell?

Exp*_*lls 7

您可以使用sh(或bash)作为命令而不是cat; 实际上它将作为shell脚本运行:

sh <<EOF > $file
    date
    hostname
    echo 'End of Report'
EOF
Run Code Online (Sandbox Code Playgroud)