aix下shell读取脚本文件并逐行执行

我们很多时候需要将一个大功能的shell脚本分在不同的文件里,这样能起到条理清晰,多次复用的好处。

但是有一个问题不得不提出来,就是单个shell里面设置的环境变量在引用者里面是无效的。

举例说明:

 

  •  a.sh的内容,我们在a中执行b
#!/usr/bin/sh  
b.sh  
echo $test_a  
  • b.sh的内容,我们设置了一个环境变量,或者说变量。
#!/usr/bin/sh  
export test_a=ok; 

  

  • 结果如下:
[osstest:/oradata/olcomtest$]a.sh  
ok  
  
[osstest:/oradata/olcomtest$]  

  

 

可见b中可以输出了正常的值,而a中则无法引用,这是shell的本有的特点。

但是我们如何能达到一个环境变量设置的文件多次使用呢。

答案是:我们将b.sh中的文件内容在a中逐行执行, 注意如果b中存在多行一个单位的脚本则无效了。

例子如下:

 

#!/usr/bin/sh  
##定义配置文件的存放目录  
envFile=./setenv.sh;  
echo "设置配置文件中的配置,配置文件为:${envFile}";  
sleep 2;  
while read line  
  do eval $line;  
    echo $line;  
  done < $envFile;  
 echo "环境变量设置完成,5秒后将启动程序";  
 sleep 1;  
  echo "5";  
 sleep 1;  
  echo "4";  
 sleep 1;  
  echo "3";  
 sleep 1;  
  echo "2";  
 sleep 1;  
  echo "1";  
##启动程序  
./NEA035 NEA035  

这样我们的NEA035程序就能使用setenv.sh中的环境变量了。

 

 

 

https://www.iteye.com/blog/xuelianbobo-2098221

posted @ 2021-08-29 22:26  悟透  阅读(579)  评论(0编辑  收藏  举报