簡體   English   中英

重擊:回聲提取變量

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM