我有两个Bash脚本。父脚本调用下标来执行某些操作并返回值。如何将下标中的值返回到父脚本?在下标中添加return
并在父项中捕获值不起作用。
答案 0 :(得分:37)
我假设这些脚本在两个不同的进程中运行,即你没有“采购”其中一个。
这取决于您想要返回的内容。如果您只希望返回0到255之间的退出代码,那么:
# Child (for example: 'child_script')
exit 42
# Parent
child_script
retn_code=$?
如果您希望返回文本字符串,则必须通过stdout(或文件)执行此操作。有几种方法可以捕获它,最简单的是:
# Child (for example: 'child_script')
echo "some text value"
# Parent
retn_value=$(child_script)
答案 1 :(得分:0)
这是使用临时文件从子脚本返回文本值的另一种方法。在parent_script中创建一个tmp文件,并将其传递给child_script。我更喜欢这种方式,而不是解析脚本的输出
父母
#!/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
孩子
#!/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
答案 2 :(得分:-3)
从下标中返回一个值并检查变量$?其中包含返回值