返回後意外這是我的last question上堆棧溢出的後續問題。 我會削減腳本的基本部分,但如果s.o.認爲,知道腳本做什麼可能會有所幫助,您可以查看其他問題。bash腳本退出從功能
#!/usr/bin/env bash
set -eu -o pipefail
declare -a framelist
#Print all results
function output_values() {
echo "Results!";
}
#parsing information from stdin
function parser() {
while read tc;
do
if [ -z "$tc" ]; then
continue
fi
#Evaluation and saving result to array
echo $result_value;
framelist+=($result_value);
if ((<<some abort condition>>)); then
exec 0>&-
echo "Last result: $result_value";
return 0
fi
done
}
some_command_writing_to_stdout | parser $2;
output_values;
腳本執行命令和管道輸出到我的本地函數,最後在該行echo "Last result: $result_value";
,因爲它是打算做返回的結果。在此之後,它將終止提供在該功能中解析的數據的命令 - 這也適用。
當達到return 0
時,我想應該執行腳本的下一行(在命令的右下方)output_values;
,但它不是。
即使我稱之爲output_values功能直接回聲線前,打印的結果解析器功能,它不被執行。
它會變得更加怪異,因爲我可以註釋掉exec 0>&-
和所有行爲一樣。即使應該由該行終止的命令也會在解析器函數退出時立即終止。
我有什麼改變能夠與我的解析器函數的結果上下工夫,它返回後?這不能是有意的行爲。
問候
曼努埃爾
後的樣本代碼很簡單,工作併產生準確的故障 – Anubis
你嘗試'設置-x'? –
'set -x'只顯示'return 0'後面的退出,之後沒有執行任何操作。 –