调用函数并将值存储在变量中

调用函数并将值存储在变量中
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
    ...

如果你有checkreturn 0 或“成功”

相关内容