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
0または「成功」を返した場合