我有一個簡短的bash腳本來檢查是否正在運行Python程序。該程序在運行時寫出一個PID文件,因此將它與當前正在運行的進程列表進行比較,可以提供我所需的內容。但是我遇到了一個變化的問題,然後顯然改變了!這裏的腳本:Bash變量不會持續變化
#!/bin/bash
# Test whether Home Server is currently running
PIDFILE=/tmp/montSvr.pid
isRunning=0
# does a pid file exist?
if [ -f "$PIDFILE" ]; then
# pid file exists
# now get contents of pid file
cat $PIDFILE | while read PID; do
if [ $PID != "" ]; then
PSGREP=$(ps -A | grep $PID | awk '{print $1}')
if [ -n "$PSGREP" ]; then
isRunning=1
echo "RUNNING: $isRunning"
fi
fi
done
fi
echo "Running: $isRunning"
exit $isRunning
輸出我得到的,當Python腳本是運行,是:
RUNNING: 1
Running: 0
而且bash腳本的退出值是0,所以isRunning是得到改變在所有這些if語句中(即代碼按照預期執行),但是然後以某種方式正在運行再次返回到0。困惑...
謝謝choroba - 工作。 –