gpt4 book ai didi

bash - 使用超时触发器在 bash 'read' 中丢失数据

转载 作者:行者123 更新时间:2023-12-05 07:31:15 26 4
gpt4 key购买 nike

我对丢失数据感到有点惊讶。我想退出状态警告我有什么事发生了,但是有没有办法恢复部分读取(如果有的话)?请注意,'foo' 不会出现在输出的任何位置。写入了,读取等待满行超时,数据消失。我想我可以使用退出状态来重试。

$ ( exec  6< <(echo -n "foo";
sleep 2; echo bar);
read -t 0.5 -u 6 baz;
echo $?;
sleep 3;
read -u 6 baz2;
echo $?;
declare -p baz baz2 )
142
0
declare -- baz=""
declare -- baz2="bar"

最佳答案

似乎是一个错误。我不能用 bash 5.1.8 重现这个。

$ cat fd-6.bash
( exec 6< <(echo -n "foo";
sleep 2; echo bar);
read -t 0.5 -u 6 baz;
echo $?;
sleep 3;
read -u 6 baz2;
echo $?;
declare -p baz baz2 )

输出确实包含 foo。

$ bash  fd-6.bash 
142
0
declare -- baz="foo"
declare -- baz2="bar"

但是,bash 4.3 确实像您描述的那样运行,因此您应该升级。

$ bash-4.3 fd-6.bash 
142
0
declare -- baz=""
declare -- baz2="bar"

关于bash - 使用超时触发器在 bash 'read' 中丢失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51921849/

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