gpt4 book ai didi

linux - 如何等待变量的值在特定时间间隔之前设置为 true

转载 作者:太空宇宙 更新时间:2023-11-04 04:53:33 26 4
gpt4 key购买 nike

场景:
我有一个在嵌入式 Linux 上运行的 shell 脚本。该脚本启动一个需要打开变量状态的应用程序。

代码:
所以我这样做

#!/bin/sh

start_my_app=false

wait_for_something=true
while $wait_for_something; do

wait_for_something=$(cat /some/path/file)

if [ "$wait_for_something" = "false" ]
then
echo Waiting...
elif [ "$wait_for_something" = "true" ]
then
echo The wait has ended
wait_for_something=false
start_my_app=true
else

fi

done

if [ "$start_my_app" = "true" ]
then
/usr/bin/MyApp
fi

#End of the script

/some/path/file 的值为 false,并在几秒钟内由不同组件中的另一个脚本变为 true。然后,随着逻辑的进行,我的脚本中的 wait_for_something 变为 true 并且 /usr/bin/MyApp 启动。

问题和问题:
但我想以更好的方式做到这一点。
我不想在 while 循环中无限等待,期望在一段时间后将 /some/path/file 中的内容值设置为 true

我只想等待 /some/path/file 中的内容值设置为 true 5 秒。如果 /some/path/file 在 5 秒内不包含 true,我想将 start_my_app 设置为 false。

如何在 Linux 上的 shell 脚本中实现此功能?

PS:
我的整个脚本由另一个脚本在后台运行

最佳答案

使用SECONDS变量作为计时器。

SECONDS=0
while (( SECONDS < 5 )) && IFS= read -r value < /some/path/file; do
if [[ $value = true ]]; then
exec /usr/bin/MyApp
fi
done

如果您从未从文件中读取true,您的脚本将在 5 秒后退出。否则,脚本将用 MyApp 替换当前 shell,从而有效退出 while 循环。

关于linux - 如何等待变量的值在特定时间间隔之前设置为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52840331/

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