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,只是输出了空值