내가 이것을 가지고 있다고 가정 해 봅시다 :
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
코드에 적용되지 않을 수 있다는 점에 유의하십시오(그리고 이러한 따옴표를 제거할 때 주의하십시오. 불량 배우들!).