变量在另一个变量中使用时不显示实际值

时间:2016-02-02 09:40:37

标签: bash variables

我从我想要实现的内容中获取了一段简化代码。本质上,位置变量取自配置文件,格式始终为/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

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用简单的pattern replacement

cc

答案 1 :(得分:-1)

eval应该有所帮助:

$ id='123'

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

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

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

请注意,eval会执行或扩展所有内容,就像您自己输入$loc的内容一样。所以你应该注意它的内容。