私は C/C++ プログラマーであり、一般的に非常に愚かです (または、少なくとも bash のやり方には混乱を覚えます)。プロセス置換について頭を悩ませることはできません。
グローバル ブール値を定義し、ループ内のどこかに設定して、グローバル スコープで使用する必要があります。誰かが私のユースケースを達成できるように以下のコードを適応させる方法を可能な限り簡単に説明してください.
# DEFINE HERE
for i in `seq 0 ${DAEMON_COUNT}`;
do
if [ ! -d "data$i" ]; then
# SET HERE
echo "data$i does not exist. Creating...";
mkdir data$i
fi
done
# TEST AND USE HERE
正直なところ、bash はそのタスクを実行できるとは思いません....次のブロックは次のようになります。
echo "-------------------------------------------------------------------------------"
echo "checking the state of potentially running daemons"
for i in `seq 0 ${DAEMON_COUNT}`;
do
if [ ! -e "data$i/mongod.lock" ] ; then
echo "[no lock file] mongod process $i does not exist"
else
echo "[lock file exists] process $i lock file exists "
I_PID=`cat data$i/mongod.lock`
if [ ! ${I_PID} ]; then
echo " [GOOD] lock pid empty"
elif [ "`ps -p ${I_PID} | grep ${I_PID}`" ]; then
echo " [GOOD] data1 pid: ${I_PID} running"
else
echo "[PROBABLY FATAL] data1 pid: ${I_PID} not running."
fi
fi
done
echo "-------------------------------------------------------------------------------"
私が今必要としているのは、構造体のグローバル配列です。これにより、構造体をループし、デーモンを正しく初期化するための条件付きアクションを実行できます:/.
libc を使用して luaでこれを行うだけかもしれませんが、私が差し控える唯一の理由は、ロックをインストールする必要があることです。アドホックコードリポジトリが自分のマシンに好きなものを吐き出すのは好きではありません:D