gpt4 book ai didi

linux - 将 tee 与 bash 结合使用会导致某些脚本挂起

转载 作者:太空宇宙 更新时间:2023-11-04 05:08:58 25 4
gpt4 key购买 nike

我有一个简单的脚本文件startsql.sh来启动mysql:

#!/bin/bash
#Script to Start MySQL
echo "Starting MySQL"
if sudo service mysqld start; then
echo "MySQL started successfully!"
else
echo "Error: Failure to start MySQL" 1>&2
exit 1
fi

我使用以下方式运行它:

bash startsql.sh |& tee -a scriptlogs.log

虽然服务似乎已成功启动,但命令在命令窗口上显示消息后挂起。如果我取下 T 恤,它可以正常工作,无需悬挂。有趣的是,我有一个类似的脚本来停止 mysql,它工作正常,没有问题。我检查了一下,发现这两个脚本没有区别。

经过大量搜索后,我发现使用下面的方法是可行的,但这样做的副作用是 tee 进程仍在后台运行

bash startsql.sh > >( tee -a scriptlogs.log) 2>&1

有人可以帮我理解为什么使用 tee 在某些情况下会挂起吗?

最佳答案

你能教我bash的版本吗?如果你使用bash 3.2.57,会出现这样的错误。

$ bash ./startsql.sh |& tee -a output.txt
bash ./startsql.sh |& tee -a output.txt
bash: syntax error near unexpected token `&'

关于linux - 将 tee 与 bash 结合使用会导致某些脚本挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57949490/

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