2011-10-02 172 views
1

這是我非常基本的腳本:shell腳本字符串替換使用shell變量

temp=hello 
    while read line; 
    do 
    echo ${line} 
    done 

然而,$ {線}將自身由

我想 「臨時= $ {溫度}的價值」我的腳本回聲「臨時價值是你好」。我試着做很多事情,甚至

echo `echo ${line}` 

但是每次都永遠只是打印「臨時的值是$ {}溫度」

我希望這個問題是清楚的。謝謝!

回答

1

這是怎麼回事?

temp=hello 
while read line; do 
    echo "Value of temp = `eval echo ${line}`" 
done 

然後在控制檯只需鍵入:

${temp} 
+0

謝謝隊友。這似乎工作,我所做的是用簡單的替換中間行:eval echo「$ {line}」...謝謝! (我會高興,但顯然沒有業力) –

1

嗯,我有解決方案eval,但使用eval是MAUVAIS噸,實際。

$> cat 7627845.sh 
#!/bin/bash 

temp=hello 
cat file_with_values.log | while read line; 
do 
    eval echo "${line}" 
done 


$> cat file_with_values.log 
value of temp = ${temp} 

$> ./7627845.sh 
value of temp = hello 
+0

無用的'貓'的使用:'而讀線; eval echo「$ line」;完成

+0

坦率地說,這些方法之間沒有太大的區別。 –

+0

取決於你在同時正在做什麼。如果你'cat file | while ...'然後while命令在子shell中運行,並且在子體結束時,在while體中設置的任何變量都會消失。所以,可能會有很大的差異。顯然,這不是這種情況,但這是一個教學網站,所以最好是教好的原則。 –