将数组元素传递给 Heredoc

Har*_*ado 2 linux bash heredoc

我试图将数组元素传递给heredoc,目标是生成一个文件,例如:

declare -a box=("element1" "element2" "element3")

cat > test.txt <<-EOF
some text, insert first element
some text, insert second element
some text, insert third element
EOF
Run Code Online (Sandbox Code Playgroud)

这可能吗?,我怎样才能做到这一点?

tha*_*guy 6

您可以使用以下方式嵌套循环$(..)

declare -a box=("element1" "element2" "element3")

cat > test.txt <<-EOF
Greetings,

Here are the elements you wanted:
$(
    for s in "${box[@]}"
    do
      echo "some text, $s"
    done
 )

Happy New Year from $USER
EOF
Run Code Online (Sandbox Code Playgroud)

执行时,会产生一个test.txt包含:

Greetings,

Here are the elements you wanted:
some text, element1
some text, element2
some text, element3

Happy New Year from myusername
Run Code Online (Sandbox Code Playgroud)