是否可以将shell文件中定义的变量插入到从另一个文件读取的字符串中?(在这个示例中,只有一个变量要插入,但我需要很多)
。文件example.txt
Hello $WORLD
和脚本文件
#!/bin/sh
WORLD=world!
FILE_STRING=$(cat example.txt)
echo $FILE_STRING
运行这个脚本,我得到
Hello $WORLD
但是我想要
Hello world!
您可以使用GNU gettext-runtime中的envsubst
动态替换文件中的变量值。
WORLD=world! envsubst < example.txt
或者更简洁地说,通过您想要替换的名称引用变量,
WORLD=world! envsubst '$WORLD' < example.txt
并使用命令替换$(..)
FILE_STRING="$(WORLD=world! envsubst '$WORLD' < example.txt)"
作为一种更好的实践,总是使用小写的变量名来引用用户定义的变量,这样它们就不会被误解为环境变量。
我想最简单的选择是使用"eval">
脚本文件:
#!/bin/sh
WORLD=world!
FILE_STRING=$(cat example.txt)
eval echo $FILE_STRING
如果你想了解更多关于eval的信息,你可以看看这里:https://www.tutorialspoint.com/unix_commands/eval.htmhttps://linuxhint.com/bash_eval_command/