在bash脚本中创建等待视图

时间:2018-12-13 18:28:58

标签: bash shell

我正在尝试在执行Shell命令集时放置一个等待视图

例如:

myfunction () {
# some commands
# npm install
# kill some
#...
}

该函数正在运行时,我想显示一个动画。动画应在功能过程完成后结束。

myfunction # Start myFunction
myAnimation # Start myAnimation
# finish myFunction     
# finish myAnimation

我正在尝试使用此nyancat动画https://github.com/klange/nyancat

2 个答案:

答案 0 :(得分:1)

假设您已按照github上的说明构建了 nyancat ,并将其放置在PATH上的某个位置:

worker() {
# some commands
# npm install
# kill some
#...
}

pidWorker=-1

myFunction() {
  worker > /dev/null 2>&1 &
  pidWorker=$!
}

observeMyFunction() {
  while kill -0 $pidWorker 2>/dev/null
  do
    sleep 1
  done
  pkill nyancat
  # clear the screen if you want, e.g. by using: printf "\033c"
}

myAnimation() {
  observeMyFunction &
  nyancat # maybe adapt the path
}

myFunction
myAnimation

基本思想来自this blog此答案已根据更改的要求进行了编辑

答案 1 :(得分:0)

您可以想象使用wait,它正在等待后台进程执行结束。 然后kill可用于终止myAnimation函数。

尝试一下:

myfunction & 
myfunction_pid=$!
myAnimation &

wait "${myfunction_pid}" # wait the end of the myfunction running in background

printf "myfunction is done\n"

kill %% # send a signal to terminate all remaining background jobs
        # started by the current bash process: i.e. myAnimation