我有一个bash脚本从这样的文件中读取输入:
while IFS="|" read -r a b
do
echo "$a something $b somethingelse"
done < "$FILE"
它读取的文件看起来像这样:
http://someurl1.com|label1
http://someurl2.com|label2
但是,我希望能够在适合我的情况下将变量名称插入到该文件中,并让脚本在看到它们时对其进行处理,因此文件可能如下所示:
http://someurl1.com?$VAR|label1
http://someurl2.com|label2
所以$VAR
可以是今天的日期,产生这样的输出:
http://someurl1.com something label1 somethingelse
http://someurl2.com?20100320 something label2 somethingelse
答案 0 :(得分:2)
您可能会发现this page有用。对于您提供的示例,请尝试:
while IFS="|" read -r a b
do
repl=`date +%Y%m%d`
a=${a/\$VAR/$repl}
echo "$a something $b somethingelse"
done < "$FILE"
...虽然如果您使用的文件格式或语言不是一成不变的,那么可能会有更好的选择;)
答案 1 :(得分:1)
你在找这样的东西吗?
FILE=vexp.in
VAR=20100320
while IFS="|" read -r a b
do
eval echo "$a something $b somethingelse"
done < "$FILE"
答案 2 :(得分:0)
对于一个通用的解决方案,它将替换任何环境变量(以及执行任何代码,所以如果你不控制变量或清理输入就不要使用它),请使用eval:
while IFS="|" read -r a b
do
eval a=$a
eval b=$b
echo "$a something $b somethingelse"
done < "$FILE"