Linux Bash - 如何使用(),&&和和&

时间:2018-01-31 16:02:30

标签: linux bash operators

我想执行一个脚本但是作为启动时的soons,我想让它回显PID,所以我正在做以下事情:

./dummy.SCRIPT & echo $!

但我也希望它在执行脚本时回应一些东西,所以我猜它应该看起来像:

( ./dummy.SCRIPT & echo $! ) && echo "Task Done!"

但它似乎不起作用,“任务完成!” echo在执行dummy.SCRIPT start的同时执行,我做错了什么!?

2 个答案:

答案 0 :(得分:0)

而不是命令行执行,编写一个小脚本,为您完成。

$ cat monitordummy.sh
#!/bin/bash

./dummyscript &
pidofdummy=$!
while ps -p $pidofdummy > /dev/null
do
  sleep 5 # Modify this according to your run time
  echo -n "...." # This will be printed on the stdout
done
echo "Task Done for dummyscript"

运行脚本:

$ chmod u+x monitordummy.sh
$ ./monitordummy.sh

答案 1 :(得分:0)

它不漂亮,但应该按照你的描述进行:

{ ./dummy.SCRIPT & PID=$!; echo $PID; } && { wait $PID ; echo "Task Done!"; }

在第一个块中运行脚本,保存并打印其PID。如果没有问题,则在后台运行第二个块,等待子进程完成并打印您的消息。并非wait也传播已完成流程的返回代码,因此您可以在此时报告已完成或相应失败。