如何在类似 ANSI C 的字符串中扩展 env var 并使用文字换行符?

How to expand env var in ANSI C-like string and use literal newline?

我正在使用 herestring 将字符串(两个带换行符的输入值)作为标准输入传递给安装程序可执行文件。 例如,使用两个输入 /var/tmpyes

执行安装程序
#!/bin/bash
# run_installer.sh

./installer <<< $'/var/tmp\nyes\n'

但是,我需要参数化输入。

例如

#!/bin/bash
# run_installer.sh
export INPUT1=""
export INPUT2=""

# does not work, it evaluates literally to: ./installer ${INPUT1} ${INPUT2}
./installer <<< $'${INPUT1}\n${INPUT2}\n'

这样我就可以像这样执行它:

./run_installer /var/tmp yes

被标记为 的问题没有回答这个问题。它在概念上相似,但差异足以保证它自己的问题。

尝试:

./installer <<< "${INPUT1}"$'\n'"${INPUT2}"$'\n'

或:

EOL=$'\n'
./installer <<< "${INPUT1}${EOL}${INPUT2}${EOL}"

无论如何,不​​需要最后一个 EOL,因为它是自动插入的。