[英]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.