2016-02-02 58 views
-1

我已經從我嘗試實現的內容中摘錄了一小段簡化代碼。本質上,位置變量取自配置文件,並始終採用/xyz/$id/abc的格式,其中$id表示在服務器上運行的應用程序。在另一個變量中使用變量時不顯示實際值

的代碼如下:

#!/bin/bash 
echo "Enter the ID" 
read id 

echo 
echo "Enter the location :" 
read location 

echo 
echo "${id}" 
echo "${location}" 

所以,當我運行代碼:

$ ./test.sh 
Enter the ID 
xx 

Enter the location : 
/data/$id/app 

xx 
/data/$id/app 

我所試圖實現的是第二個變量,基於上述輸入打印/data/xx/app

在此先感謝您的幫助。

回答

-1

eval應該會有所幫助:

$ id='123' 

$ loc='/data/$id/app' 

$ echo "$loc" 
/data/$id/app 

$ eval echo "$loc" 
/data/123/app 

注意eval將執行或擴大一切,就像如果你輸入的$loc自己的內容。所以你應該注意它的內容。

+0

謝謝...工程就像我需要它! – freddie

1

你可以使用一個簡單的pattern replacement

id=123 
location='/data/$id/app' 
location=${location/\$id/$id} 
echo $location # /data/123/app 
+0

感謝您的回覆....以前的答案對我更好,但很高興知道這種方法。 – freddie