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

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

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

举例说明:

 

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

  

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

  

 

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

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

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

例子如下:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/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 @   悟透  阅读(590)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示