Linha de comando de recuo do script Bash

0

Oi eu usei o script a seguir, que depois de ter executado e saiu, faz com que a minha linha de comando para exibir nenhum texto durante a digitação e depois de cada retorno de carro em vez de iniciar uma nova linha como

root@alix:~# 

root@alix:~# 

Eu obtenho

root@alix:~# root@alix:~# root@alix:~# root@alix:~#  etc

Ao usar ctrl c, recebo

root@alix:~# 
            root@alix:~# 
                        root@alix:~#  etc

Aqui está o script:

#!/bin/bash

###
### Run command for given number of seconds then kill it
###

read -p "How long should I run for? ==> " count_secs
echo "Time specified: " $count_secs

if [ $count_secs -gt 0 ]
then
   ###
   ### number of seconds greater than zero
   ###

   watch -n 0.5 'iw dev wlan0 station dump | grep "signal avg" >> processmonitor.log' >>/dev/null & 

   ###
   ### assume that the PID of the command is $$
   ###
   my_PID=$!
   sleep $count_secs
   kill -15 $my_PID
fi

Obrigado.

    
por Radagasp 19.04.2013 / 14:03

1 resposta

0

Você pode usar o seguinte código sem a necessidade de matar qualquer processo, após o término do tempo especificado (segs) ele irá sair.

#!/bin/bash
###
### Run command for given number of seconds then kill it
###
read -p "How long should I run for? ==> " count_secs
echo "Time specified: " $count_secs
# $SECONDS is a shell variable
# we can use it in conjuction with
# our user input 
while [ "$SECONDS" -le "$count_secs" ]
do
  # execute any commands here (put your code bellow and remove echo commands)
  echo 'date +%r'
  echo "i am doing my work now"
  # sleep (in secs) before the next execution
  sleep 1
done
# when the count_secs elapses exit
exit 0
    
por Stef K 19.04.2013 / 15:21