我有两个bash脚本a.sh
#!/bin/bash
d="printing from a.sh ${c}"
export d
b.sh
#!/bin/bash
c="yourtab"
echo ${d}
我正在通过采购a.sh
来运行b.sh
source a.sh && sh b.sh
下面是输出
printing from a.sh
但我希望输出如下
printing from a.sh yourtab
请建议如何实现这一点。
既然有人问我为什么要这样做,我想给予我为什么要这样做的实际情况。下面是场景和相应的代码。
我在esh.sh
中定义了一个电子邮件函数email()
,它存在于文件夹邮件中,取值为eto,ecc,esub。
我在env.sh
中创建变量mto,mcc,msub
我有一个mains.sh
,在这里我调用email
函数env.sh
如下所示
source mails/esh.sh
export -f email
export MTO="[email protected]"
export MCC="[email protected]"
export MSUB="this is the subject for running ${job} today"
mains.sh
如下所示
job="First Job"
eto=${MTO}
ecc=${MCC}
esub=${MSUB}
email -t eto -c ecc -s esub
我在获取env.sh
后运行mains.sh
,如下所示
source env.sh && sh mains.sh
当我运行上面的代码时,我得到的主题是this is the subject for running today
但我希望主题是this is the subject for running First Job today
希望我说清楚了。
2条答案
按热度按时间q5lcpyga1#
试试这样做:
结果
o7jaxewo2#
d
的值是在执行d="printing from a.sh ${c}"
行时分配的,即当你运行a.sh
时,它将使用c
* 的值。如果您稍后设置或修改
c
的值,d
的值将不会更改。你可以用一个函数来实现请求的输出。
文件
a.sh
b.sh
测试结果:
请注意,导出函数是一个bash扩展。