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

时间:2019-01-31 20:37:36

标签: bash stdin heredoc herestring

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

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

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

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

例如

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

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

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

./run_installer /var/tmp yes

被标记为duplicate的问题无法回答此问题。它在概念上相似,但又有足够的差异,足以保证它是自己的问题。

1 个答案:

答案 0 :(得分:2)

尝试:

stringr

或:

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

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