一、需求
需要有一些变量要从一个shell文件向另一个shell文件传递。
二、方案
2.1通过入参形式传递
当A脚本中的变量需要传递到B脚本中时,可以在运行B脚本的基础上,将A脚本中的数据加入到B脚本的入参中,从而达到传递参数的目的。
2.2通过export形式传递
在A脚本中定义变量,并对变量进行export声明,从而使B脚本可以使用A脚本的数据。
三、实例
3.1通过入参形式传递
a.sh
#!/bin/sh
echo "------a run-----"a_param1="a_param1"
a_param2="a_param2"
a_param3="a_param3"$(dirname $0)/b.sh ${a_param1} ${a_param2} ${a_param3}
b.sh
#!/bin/sh
echo "------b run-----"
b_param1=$1
b_param2=$2
b_param3=$3
echo a_param1:${a_param1}
echo a_param2:${a_param2}
echo a_param3:${a_param3}
echo b_param1:${b_param1}
echo b_param2:${b_param2}
echo b_param3:${b_param3}
结果
$ ./p1/a.sh
------a run-----
------b run-----
a_param1:
a_param2:
a_param3:
b_param1:a_param1
b_param2:a_param2
b_param3:a_param3
结论:可见a中参数无法直接使用,但传参进入的数据可以正常使用。
3.2通过export形式传递
a.sh
#!/bin/sh
echo "------a run-----"a_param1="a_param1"
a_param2="a_param2"
a_param3="a_param3"export a_param1=${a_param1}
export a_param2=${a_param2}
export a_param3=${a_param3}$(dirname $0)/b.sh
b.sh
#!/bin/sh
echo "------b run-----"
b_param1=${a_param1}
b_param2=${a_param2}
b_param3=${a_param3}
echo a_param1:${a_param1}
echo a_param2:${a_param2}
echo a_param3:${a_param3}
echo b_param1:${b_param1}
echo b_param2:${b_param2}
echo b_param3:${b_param3}
运行
$ ./p2/a.sh
------a run-----
------b run-----
a_param1:a_param1
a_param2:a_param2
a_param3:a_param3
b_param1:a_param1
b_param2:a_param2
b_param3:a_param3
结论:可见b中可直接使用a中已声明的参数。
四、总结
当需要传递的参数较少时,可以使用方案一,通过传参方式实现。当需要传递的参数较多时,建议使用方案二,对参数进行export声明后使用。