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

时间:2018-12-13 13:43:33

标签: linux bash

我正在使用bash脚本来查看给定的进程是否正在运行。如果它们没有运行,则显示进程$ p没有运行。但是,如果所有进程都在运行,我希望它打印一次:“进程正在运行”。

但是问题是它多次打印出“正在运行的进程”,并且即使有未运行的进程也被打印出。我认为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

1 个答案:

答案 0 :(得分:2)

基本上,您想实现逻辑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