我写了这个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