Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash-从下标返回值到父脚本_Bash - Fatal编程技术网

Bash-从下标返回值到父脚本

Bash-从下标返回值到父脚本,bash,Bash,我有两个Bash脚本。父脚本调用子脚本来执行一些操作并返回一个值。如何将值从下标返回到父脚本?在下标中添加一个返回值,并在父项中捕获该值不起作用。从下标返回一个值并检查变量$?其中包含返回值我假设这些脚本在两个不同的进程中运行,即您不是在“寻找”其中一个进程 这取决于你想要返回什么。如果只希望返回介于0和255之间的退出代码,则: #Child(例如:“Child_脚本”) 42号出口 #父级 子脚本 retn_代码=$? 如果希望返回文本字符串,则必须通过stdout(或文件)返回。有几种

我有两个Bash脚本。父脚本调用子脚本来执行一些操作并返回一个值。如何将值从下标返回到父脚本?在下标中添加一个
返回值
,并在父项中捕获该值不起作用。

从下标返回一个值并检查变量$?其中包含返回值

我假设这些脚本在两个不同的进程中运行,即您不是在“寻找”其中一个进程

这取决于你想要返回什么。如果只希望返回介于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