用实际值替换文件中的 shell 个变量
Replace shell variables in a file with their actual values
是否可以将 shell 文件中定义的变量插入到从另一个文件读取的字符串中? (在此示例中,它只插入 1 个变量,但我需要很多)
例如有文件 example.txt
Hello $WORLD
和脚本文件
#!/bin/sh
WORLD=world!
FILE_STRING=$(cat example.txt)
echo $FILE_STRING
运行这个脚本我有
Hello $WORLD
但我想要
Hello world!
我想最简单的选择是在回显之前使用“eval”。
对于脚本文件:
#!/bin/sh
WORLD=world!
FILE_STRING=$(cat example.txt)
eval echo $FILE_STRING
如果你想了解更多关于eval的知识,可以看这里:
https://www.tutorialspoint.com/unix_commands/eval.htm
https://linuxhint.com/bash_eval_command/
您可以使用 GNU gettext-runtime 中的 envsubst
来动态替换文件中的变量值。
WORLD=world! envsubst < example.txt
或者更简洁,按要替换的名称引用变量,
WORLD=world! envsubst '$WORLD' < example.txt
并使用命令替换将结果存储在变量中 $(..)
FILE_STRING="$(WORLD=world! envsubst '$WORLD' < example.txt)"
作为更好的做法,始终使用小写变量名称来引用用户定义的变量,这样它们就不会不会被误解为环境变量。
是否可以将 shell 文件中定义的变量插入到从另一个文件读取的字符串中? (在此示例中,它只插入 1 个变量,但我需要很多)
例如有文件 example.txt
Hello $WORLD
和脚本文件
#!/bin/sh
WORLD=world!
FILE_STRING=$(cat example.txt)
echo $FILE_STRING
运行这个脚本我有
Hello $WORLD
但我想要
Hello world!
我想最简单的选择是在回显之前使用“eval”。
对于脚本文件:
#!/bin/sh
WORLD=world!
FILE_STRING=$(cat example.txt)
eval echo $FILE_STRING
如果你想了解更多关于eval的知识,可以看这里: https://www.tutorialspoint.com/unix_commands/eval.htm https://linuxhint.com/bash_eval_command/
您可以使用 GNU gettext-runtime 中的 envsubst
来动态替换文件中的变量值。
WORLD=world! envsubst < example.txt
或者更简洁,按要替换的名称引用变量,
WORLD=world! envsubst '$WORLD' < example.txt
并使用命令替换将结果存储在变量中 $(..)
FILE_STRING="$(WORLD=world! envsubst '$WORLD' < example.txt)"
作为更好的做法,始终使用小写变量名称来引用用户定义的变量,这样它们就不会不会被误解为环境变量。