Linux
如何使用解釋的環境變數列印文件的內容
這個問題和這個問題類似: Is it possible to print the content of a variable of a variable with shell script? (間接引用)
在一個文件中
a=${env1}is a good ${env2} b=${env3}is a good ${env2}
我想將此文件的內容顯示給:
a=tom is a good cat b=jerry is a good mouse
我試過這個:
tmp=`cat a.conf` echo $tmp # environmental variables are not interpreted, and file format changed, hard to read echo ${!tmp} # no ...
此外,上述想法有點繞道。
如果你有一個看起來像這樣的文件:
a=${env1} is a good ${env2} b=${env3} is a good ${env4}
如果您想生成替換變數的輸出,請使用該
envsubst
命令,該命令是gettext
包的一部分。假設上面是 inexample.txt.in
,我們可以執行:env1=tom env2=cat env3=jerry env4=mouse envsubst < example.txt.in
並作為輸出:
a=tom is a good cat b=jerry is a good mouse
如果
ensubst
不可用,您可以執行以下操作:#!/bin/sh tmpfile=$(mktemp scriptXXXXXX) trap 'rm -f $tmpfile' EXIT cat > "$tmpfile" <<END_OUTSIDE cat <<END_INSIDE $(cat) END_INSIDE END_OUTSIDE sh "$tmpfile"
將腳本命名為
envsubst.sh
,並與前面的範例類似地執行它:
env1=tom env2=cat env3=jerry env4=mouse sh envsubst.sh < example.txt.in