gpt4 book ai didi

linux - Bash 脚本 For Loop 包含 if/else 问题

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

我正在使用 bash 脚本查看给定进程是否正在运行。如果它们没有运行,那么它会打印 Process `$p' is not running。但是,如果所有进程都在运行,我希望它只打印一次:“进程正在运行”。

但问题是它会多次打印出“进程正在运行”,并且即使有未运行的进程也会打印出来。我认为 For 循环有问题。

#!/bin/bash


check_process=( "ssh" "mysql" "python" )

for p in "${check_process[@]}"; do
if ! pgrep -x "$p" > /dev/null; then
echo "Process \`$p' is not running"
else
echo "Processes are running"
fi
done

最佳答案

本质上,您想要实现一个逻辑 AND 条件。你可以这样做:

#!/bin/bash


check_process=( "ssh" "mysql" "python" )

allrunning=1
for p in "${check_process[@]}"; do
if ! pgrep -x "$p" > /dev/null; then
echo "Process \`$p' is not running"
allrunning=0
fi
done
if [ $allrunning -eq 1 ]
then
echo "Processes are running"
fi

关于linux - Bash 脚本 For Loop 包含 if/else 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53763242/

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