私がこれを持っているとしましょう:
delete_lock () {
if grep -q 'PATTERN'; then
# some command here
fi
cat >/dev/null
}
node foo.js | delete_lock
node.js プロセスが delete_lock に "foodog" を書き込むか、"sandbag" を送るとします。 (ユニークな名前でも構いません...)
delete_lock関数からどのように読み取ることができますか? delete_lockは一意の名前を受け取り、ファイルシステムからその名前のロックを削除します。どうすればいいですか?
私が推測できる唯一のことは:
delete_lock () {
if grep -q 'lockname:xxx'; then
release_lock $xxx
fi
cat >/dev/null
}
しかし、変数$ xxxをどのように参照しますか?ハハ?
答え1
私はあなたが一種のxxx
パターンの交換であると仮定します。
delete_lock () {
LOCK="$(grep -m1 -o "lockname:xxx")"
if [ -n "${LOCK#lockname:}" ]; then
release_lock "${LOCK#lockname:}"
fi
}
node foo.js | delete_lock
最初の一致が観察されると、データ処理は停止しますlockname:xxx
。その後、使用します。パラメータ拡張プレフィックスを削除しlockname:
、一致するものがあると仮定して(例:)xxx
これを実行しますrelease_lock
(例release_lock "xxx"
:)。
node
呼び出しを短くしたくない場合や複数の一致が必要な場合は、オプションを削除してください-m1
。grep
ただし、引用符がrelease_lock
コードに適用されない可能性があることに注意してください(そしてこれらの引用符を削除するときは注意してください。悪い俳優!)。