linux 子进程变量传递给父进程

vim backfunc

#!/bin/sh
_CODE="comet"
_FULLBACKUP="yes"
_LOGFILE="/logs/backup/"
_DEVICE="/dev/rmt/On"
_INFORM="yes"
_PRINT_STATS="yes"



#!/bin/sh

if [ -r backfunc ];then
        .   backfunc ########################################注意:.空格 文件名 或者  source backfunc
        #######################export是不行的
else
        echo "$`basename $0` cannot locate backfunc file"
fi
echo -n " Enter the code name:"
read CODE
if [ "${CODE}" != "${_CODE}" ];then
        echo  "worong code...exiting..will use defaults"
        echo $CODE
        echo $_CODE
#       exit 1
fi
echo "Ther environment config file reports"
echo "Full Backup Required :$_FULLBACKUP"
echo "The Device To Backup to is :$_DEVICE"
echo "You Are to be informed by Mail:$_INFORM"

echo "A Statistic report to be printed :$_PRINT_STATUS"

总结:sub-shell有自己的环境空间,他自己的环境中增加或修改的变量在sub-shell推出
时也随之销毁,不会带回到父进程中。pipeline和(list)都会创建sub-shell,要
注意呀!

你的sh-bin中
./sh-env
一行可以改成
. sh-env

source sh-env
使他在当前shell中运行。

虽然在sh-env中export了sh_var,它的效果只会影响到sh-env本身及其子shell,你在sh-bin中的“./sh-env”这行的本质是新开一个sh来执行sh-env,结束后退回到执行sh-bin的sh中,具有遗传性质的是前边那个执行sh-env的sh,而不是执行sh-bin的sh
在sh-bin中不是没有输出sh_var,只是输出了空值



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值