gpt4 book ai didi

linux - bash 在变量中执行命令

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

我在 Bash 的变量中有一个命令:

check_ifrunning=\`ps aux | grep "programmname" | grep -v "grep" | wc -l\`

该命令检查当前是否正在运行特定程序。稍后在我的脚本中,我想查询某个点上的变量值。如果特定程序正在运行,脚本应该休眠 15 分钟。

我是这样解决的:

while [ $check_ifrunning -eq 1 ]; do
sleep 300
done

脚本会在每次循环运行时都执行变量中的命令,还是会在第一次执行后保留变量中的值?

我的脚本中有更多变量可以更改它们的值。这只是其中的一个简单示例。

最佳答案

注意 check_ifrunning 只设置了一次,在

 check_ifrunning=`ps aux | grep "programmname" | grep -v "grep" | wc -l`

并且它是在循环之前设置的:

 while [ $check_ifrunning -eq 1 ]; do
sleep 300
done

出于调试目的,您可以在 sleep 之前的 while 循环中添加一个 echo check_ifrunning is $check_ifrunning 语句 ...

您可能只是想(使用 pidof(8))- 定义或使用任何 check_ifrunning Bash 变量:

 while [ -n "$(pidof programname)" ]; do
sleep 300
done

因为您想在每次循环开始时测试 programname 是否在运行!

您应该使用更可嵌套和更易读的 $(...) 而不是反引号。

考虑阅读 Advanced Bash Scripting Guide ...

如果您正在编写 Bash 脚本,请考虑以

 #!/bin/bash -vx

调试时。当您满意时,删除 -vx...

关于linux - bash 在变量中执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24604834/

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