gpt4 book ai didi

linux - 在循环中捕获 bash 函数的返回值和输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:33:56 25 4
gpt4 key购买 nike

我有点困惑,我有一个返回退出代码值并返回输出的函数,运行两个 expect 脚本(我从第一个脚本生成退出代码,从第二个脚本生成输出,在函数中) .

我想弄清楚如何在循环中使用这个函数。我想循环函数直到退出代码为零,然后将输出值存储在变量中。我有点难过如何做到这一点,我想知道是否有人可以建议?我的目标是:

run_expect_scripts()
{
expect expect_script1
exit_value="$?"
output=$(expect expect_script2)
echo "$output"
return "$exit_value"
}


until [ run_expect_scripts -eq 0 -o a_counter -eq 5 ]; do
a_counter=$(expr a_counter + 1)
sleep 2s
done
use output of run_expect_scripts

请问我怎样才能做得更好?

最佳答案

处理这个问题的一种方法是使用临时文件:

#!/bin/bash

myfunc() {
echo "output $RANDOM"
return $((RANDOM % 5))
}

tmp=$(mktemp)
until myfunc > "$tmp" || (( count++ == 5)); do :; done
cat "$tmp"

或者如果您不想要临时文件:

#!/bin/bash

myfunc() {
echo "output $RANDOM"
return $((RANDOM % 5))
}

ec=1
until [ $ec -eq 0 ] || (( count++ == 5))
do
output=$(myfunc)
ec=$?
done
echo "$output"

关于linux - 在循环中捕获 bash 函数的返回值和输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52804304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com