我知道我可以使用envsubst
命令来替换文件内的环境变量并将其写入输出文件:
envsubst < input.txt > output.txt
但是,现在我只有一个变量,它不是一个文件。但我仍然需要替换其中的任何环境变量。
export original_text="Hello $name, please come here $date"
# I want to be able to replace $name and $date, in the RAM and not on disk and files
export $name="John"
export $date="tomorrow"
output=$(envsubst < $original_text) # this is a pseudo-command
echo $output
# prints => Hello John, please come here tomorrow
这可能吗?如何实现?
答案1
是的,您可以使用此处的字符串:<<< "$variable"
您的 original_text 必须是单引号,否则在创建时变量将被替换original_text
。
$ original_text='Hello $name, please come here $date'
$ export name="John"
$ export date="tomorrow"
$ envsubst <<< "$original_text"
Hello John, please come here tomorrow
当然,您可以像往常一样将其保存在变量中:
output=$(envsubst <<< "$original_text")
您也可以通过管道传输envsubst
,例如:
$ printf '%s\n' "$var" | envsubst
Hello John, please come here tomorrow