나는 bash에서 이것을 썼다:
#!/bin/bash
eval "(a command) &"
pid1=$!
eval "(while kill -0 $pid1; do .... ; done) &" #It creates file.txt after few seconds
pid2=$!
if [ -s /tmp/file.txt ]; then
for line in $(cat /tmp/file.txt)
do
sth
done
Bash 스크립트를 사용한 논리: pid1과 pid2의 값이 정확합니까?
이 스크립트가 올바르게 실행됩니까?
답변1
나는 `eval "(...) &" 구문이 필요하다고 생각하지 않습니다. 이렇게 하세요:
cmd1 &
pid1=$!
cmd2 &
pid2=$!
하지만 그 외에는 당신의 접근 방식이 꽤 좋아 보입니다.
예
$ more ex.bash
#!/bin/bash
sleep 10 &
pid1=$!
sleep 10 &
pid2=$!
echo "ID1: $pid1 --- ID2: $pid2"
이제 실행하면 다음과 같습니다.
$ ./ex.bash
ID1: 27866 --- ID2: 27867
이것이 올바른지 확인할 수 있습니다.
$ pgrep -l sleep
27866 sleep
27867 sleep