Bash-从下标返回值到父脚本
我有两个Bash脚本。父脚本调用子脚本来执行一些操作并返回一个值。如何将值从下标返回到父脚本?在下标中添加一个Bash-从下标返回值到父脚本,bash,Bash,我有两个Bash脚本。父脚本调用子脚本来执行一些操作并返回一个值。如何将值从下标返回到父脚本?在下标中添加一个返回值,并在父项中捕获该值不起作用。从下标返回一个值并检查变量$?其中包含返回值我假设这些脚本在两个不同的进程中运行,即您不是在“寻找”其中一个进程 这取决于你想要返回什么。如果只希望返回介于0和255之间的退出代码,则: #Child(例如:“Child_脚本”) 42号出口 #父级 子脚本 retn_代码=$? 如果希望返回文本字符串,则必须通过stdout(或文件)返回。有几种
返回值
,并在父项中捕获该值不起作用。从下标返回一个值并检查变量$?其中包含返回值我假设这些脚本在两个不同的进程中运行,即您不是在“寻找”其中一个进程
这取决于你想要返回什么。如果只希望返回介于0和255之间的退出代码,则:
#Child(例如:“Child_脚本”)
42号出口
#父级
子脚本
retn_代码=$?
如果希望返回文本字符串,则必须通过stdout(或文件)返回。有几种方法可以捕获,最简单的是:
#Child(例如:“Child_脚本”)
回显“某些文本值”
#父级
retn_值=$(子_脚本)
下面是使用临时文件从子脚本返回文本值的另一种方法。在父脚本中创建tmp文件,并将其传递给子脚本。与解析脚本的输出相比,我更喜欢这种方式
母公司
#!/bin/bash
# parent_script
text_from_child_script=`/bin/mktemp`
child_script -l $text_from_child_script
value_from_child=`cat $text_from_child_script`
echo "Child value returned \"$value_from_child\""
rm -f $text_from_child_script
exit 0
孩子
看看昨天的答案:-这可能会有很大帮助。这里的“Return”不明确,因为
Return
语句只能用于从函数返回,而不是从脚本返回。确切地说,您需要使用exit
语句从脚本返回。@chepner:实际上return
也可以从“源”文件(
或source
命令)中使用,但那是脚本吗?啊,很棘手。我猜正确的答案是“根据需要使用return
或exit
”。echo方法是返回子脚本返回的所有内容还是仅返回最后一行?@AakilFernandes:在这种情况下,echo
写入示例中给定的行:“一些文本值”。但是,父级正在捕获来自子级的所有标准输出,无论它是否来自回音。这可能是由新行分隔的多行$'\n'
#!/bin/bash
# child_script
# process -l parm for tmp file
while getopts "l:" OPT
do
case $OPT in
l) answer_file="${OPTARG}"
;;
esac
done
read -p "What is your name? " name
echo $name > $answer_file
exit 0