[英]Bash: echo extract variables
假设有一个名为“ test.sh”的脚本:
#!/bin/bash
while read line; do
APP=/apps echo "$line"
done < ./lines
和“线”:
cd $APP && pwd
如果我bash test.sh
,它将打印出“ cd $ APP && pwd”。
但是,当我在终端中键入APP=/apps echo "cd $APP && pwd"
时,它会打印出'cd / apps && pwd'。
是否可以使用echo
提取从常规文件读取的变量?
根据文件的内容,您可能需要使用eval:
#!/bin/bash
APP=/apps
while read line; do
eval "echo \"$line\"" # WARNING: dangerous
done < ./lines
但是,评估非常危险。 尽管这里的引用适用于简单情况,但是通过操纵输入执行任意命令是很容易的。
您应该使用eval
评估从文件读取的字符串行
如果知道要替换的变量,只需替换它们即可。
sed 's%\$APP\>%/apps%g' ./lines
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.