怎样在调用另一个shell文件后获取其返回值

sh/bash/dash/ksh/zsh等Shell脚本
回复
huangyingw
帖子: 53
注册时间: 2008-03-05 21:42

怎样在调用另一个shell文件后获取其返回值

#1

帖子 huangyingw » 2009-01-08 21:55

如题,有没有简单的示例脚本。谢谢。。
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

Re: 怎样在调用另一个shell文件后获取其返回值

#2

帖子 xiooli » 2009-01-08 22:00

在被调用脚本里面把结果echo出来就好了。
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 怎样在调用另一个shell文件后获取其返回值

#3

帖子 aerofox » 2009-01-08 22:16

对 bash,是 $?。
huangyingw
帖子: 53
注册时间: 2008-03-05 21:42

Re: 怎样在调用另一个shell文件后获取其返回值

#4

帖子 huangyingw » 2009-01-08 22:20

我没有说清楚,我希望,把被调用脚本里的一个变量的值返回,主调脚本使用这个变量值继续去干其它事情。
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 怎样在调用另一个shell文件后获取其返回值

#5

帖子 aerofox » 2009-01-08 22:32

那一般要改造那个被调用脚本,最简单的方法是在被调用脚本 (xxx) 中把变量值 echo 出来:

代码: 全选

echo $variable
然后在调用脚本中重新赋值

代码: 全选

variabel=`xxx`
这种方法只适用于被调用脚本没有其它信息需要从标准输出设备输出的情况,而且需要多个变量值时麻烦。如果需要多个变量值,可以在 xxx 中用

代码: 全选

echo "var1=$var1; var2=$var2"
然后在调用脚本中

代码: 全选

eval `xxx`
如果 xxx 还有其它信息要在标准输出中输出,则可以用临时文件,如 xxx:

代码: 全选

echo "var1=$var1; var2=$var2" > /tmp/atmpfile

代码: 全选

. /tmp/atmpfile
当然实际使用时不应用使用 atmpfile 这种固定的文件名做为临时文件名,否则运行两个实例时就有问题了。
huangyingw
帖子: 53
注册时间: 2008-03-05 21:42

Re: 怎样在调用另一个shell文件后获取其返回值

#6

帖子 huangyingw » 2009-01-09 23:01

aerofox 写了:那一般要改造那个被调用脚本,最简单的方法是在被调用脚本 (xxx) 中把变量值 echo 出来:

代码: 全选

echo $variable
然后在调用脚本中重新赋值

代码: 全选

variabel=`xxx`
这种方法只适用于被调用脚本没有其它信息需要从标准输出设备输出的情况,而且需要多个变量值时麻烦。如果需要多个变量值,可以在 xxx 中用

代码: 全选

echo "var1=$var1; var2=$var2"
然后在调用脚本中

代码: 全选

eval `xxx`
如果 xxx 还有其它信息要在标准输出中输出,则可以用临时文件,如 xxx:

代码: 全选

echo "var1=$var1; var2=$var2" > /tmp/atmpfile

代码: 全选

. /tmp/atmpfile
当然实际使用时不应用使用 atmpfile 这种固定的文件名做为临时文件名,否则运行两个实例时就有问题了。
谢谢,我正在试,第一个试出来了。。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 怎样在调用另一个shell文件后获取其返回值

#7

帖子 eexpress » 2009-01-09 23:08

2,3楼的都对啊。估计没理解到他们的意思。
● 鸣学
huangyingw
帖子: 53
注册时间: 2008-03-05 21:42

Re: 怎样在调用另一个shell文件后获取其返回值

#8

帖子 huangyingw » 2009-01-10 11:11

eexpress 写了:2,3楼的都对啊。估计没理解到他们的意思。
谢谢大家,,2,3楼的太简短了。。。
回复