pid=`ps -ef | grep wcm2_wcm2appwlx | awk '$0!~/grep/ && $2~/[0-9]/{print $2}'`
for I in 1 2 3 4 5
do
sts=$(check)
if [$sts eq / true/]
then
echo $I
slp
else
break #Abandon the loop.
fi
done
slp(){
echo "sleep is executing "
}
check(){
if ps -p $pid > /dev/null
then
echo " Backup Script is running with $PID "
return true
fi
}
答案1
语法var=$()
将存储stdout
变量括号内的代码,而不是函数/进程的退出值。退出/返回值将存储在$?
您可以将sts
回显内容作为字符串进行测试,也可以$?
根据预期返回值进行检查。在我的 bash 中我不能true
只返回数值。
[
另请注意,和周围的空格]
不是可选的,必须包含它们。所以
sts=$(check)
if [[ "$sts" = *"is running"* ]]; then
...
另请注意,我使用了[[ ... ]]
代替,[ ... ]
因此我可以使用通配符匹配
你也可以这样做
if check; then
...
如果你有check
return 0 或“成功”