第一个变量被shell脚本中的第二个变量覆盖

时间:2013-01-23 05:44:42

标签: linux shell

例如, 我有两个shell脚本文件名main.shchild.sh以及一个ini文件名param.ini

在main.sh

#!/bin/bash
./usr/child.sh
echo $param // show Jame
var=${param}How are you
echo $var // output show only How are you and  Jame is overwrited.The output should Jame How are you

在child.sh

#!/bin/bash
./usr/param.ini

param=$name
echo $param // show Jame

在param.ini

 name=Jame

执行main.sh后输出显示你和Jame是如何丢失的。 詹姆斯被淹没了。 我想要的是 Jame你好吗

3 个答案:

答案 0 :(得分:2)

使用命令.代替source进行采购。它会工作。

来源. param.ini(请注意.param.ini之间的空格)

sgeorge-mn:~ sgeorge$ cat main.sh 
#!/bin/bash
source child.sh
echo "$param"
var="${param}, How are you"
echo "$var"

sgeorge-mn:~ sgeorge$ cat child.sh 
#!/bin/bash
source param.ini
param=$name
echo $param

sgeorge-mn:~ sgeorge$ cat param.ini 
name=Jame

sgeorge-mn:~ sgeorge$ bash main.sh 
Jame
Jame
Jame, How are you

答案 1 :(得分:1)

我认为使用shell的替换方法是可以的。 在ini文件的值中设置关键字。例如

key1 = valueA //'A' will be used as a key word.

在shell中,实现replace方法如下:

var = "${param/A/HowAreYou}"

答案 2 :(得分:0)

试试这个

 var="${param}How are you"

而不是

var=${param}How are you