【发布时间】:2015-07-08 17:17:48
【问题描述】:
这里我们在 bash shell 中有 2 个变量
ID="ABC"
ID_STRING="Here is the [${ID}]"
有没有什么方法可以动态地将 ID_STRING 中的 var ${ID} 替换为“ABC”并回显到 concole?
【问题讨论】:
这里我们在 bash shell 中有 2 个变量
ID="ABC"
ID_STRING="Here is the [${ID}]"
有没有什么方法可以动态地将 ID_STRING 中的 var ${ID} 替换为“ABC”并回显到 concole?
【问题讨论】:
如果我正确理解了问题,则 ID_STRING 变量在回显到屏幕时包含文字字符串 ${ID} 并且未按照您在问题中显示的方式分配 - 按照您在问题中的方式分配使用双引号意味着 ID_STRING 变量实际上永远不会包含文字字符串 ${ID} 因为使用双引号,变量替换是在分配时完成的。所以首先:要将文字字符串 ${ID} 放入 ID_STRING 中,您需要使用单引号。第二:您需要在回显时重新评估 ID_STRING。我这样做($ 是 bash 提示符):
$ ID=ABC
$ echo $ID
ABC
$ ID_STRING='Here is the [${ID}]'
$ echo $ID_STRING
Here is the [${ID}]
$ eval echo $ID_STRING
Here is the [ABC]
$ echo $ID, $ID_STRING, `eval echo $ID_STRING`
ABC, Here is the [${ID}], Here is the [ABC]
【讨论】:
你想用字符串替换${ID}:
ID="ABC"
sed 's/\${ID}/'$ID'/' filename
输出:
ID_STRING="Here is the "[ABC]"
如果您想在将字符串分配给ID_STRING 时使用ID 的值,您可以使用:
ID="ABC"
ID_STRING="Here is the [$ID]"
现在:
echo $ID_STRING
给予
Here is the [ABC]
【讨论】:
sed -i -e 's/old/new/g' file
基本上是你需要的,输出变化看看here。
【讨论】: