Como executar duas partes de códigos de Bashscript simultaneamente enquanto um deles é infinito enquanto loop

1

eu tenho este código de script bash e eu quero executar o comando de leitura lado a lado com o loop while como o comando read buscar dados do usuário e salvá-lo em algum arquivo e o loop while fazer a verificação de algo relacionado, então alguma sugestão como fazê-los em ambos os terminais ou algo parecido

Obrigado

 #!/bin/bash 
    trap "echo \"\" > /home/........./file.txt"  SIGINT SIGTERM SIGHUP
    while sleep 2
do
read -s -n 1 key   
    if [[ $key = "" ]]; then 
        echo >> somefile
    else
        echo "You pressed '$key'"
    fi
clear
done
    while sleep $sleepInterval
    do
    i=0
    while read line
    do
    somecommands
    done
    
por Ahmed Zain El Dein 03.05.2013 / 21:58

2 respostas

2

É assim que eu faço isso:

#!/bin/bash

a=0

function READ {

read -t 1 -n 1 bb && ACTION

echo -ne "Hello $a times. Hit \"q\" to quit."'\r' 
a='echo "$a + 1" | bc'

READ

}

function ACTION {

if [[ "$bb" == "Q" || "$bb" == "q" ]]; then
    echo "Good bye!"
    exit 0
else 
    echo -e "\n\nYou pressed $bb.\n\n"
    READ
fi

}

READ

E isso é o que respondeu em Stackoverflow por Andy e funciona muito bem aqui.

O script é dele (acabei de adicionar a parte do trap como ele diz que o terminal estaria em um estado estranho se o script fosse morto):

#!/bin/bash

trap 'echo -e "\n\n############\n#          #\n# Bye bye  #\n#          #\n############\n" && exit 1' INT 
trap 'notify-send "Bye bye" "The terminal has been closed" && exit 1' HUP

if [ ! -t 0 ]; then
  echo "This script must be run from a terminal"
  exit 1
fi

stty -echo -icanon time 0 min 0

count=0
keypress=''
while true; do
  let count+=1
  echo -ne $count'\r'

  # This stuff goes in _handle_keys
  read keypress
  case $keypress in
  # This case is for no keypress
  "")
    ;;
  $'\e[C')
    echo "derecha"
    ;;
  $'\e[D')
    echo "izquierda"
    ;;
  # If you want to do something for unknown keys, otherwise leave this out
  *)
    echo "unknown input $keypress"
    ;;
  esac
  # End _handle_keys
done

stty sane
    
por desgua 04.05.2013 / 01:06
1

eu faria o inf. loop seu próprio script separado, em seguida, quando eu corro colocar um e comercial depois

#!/bin/bash
cat /var/log/dmesg
~/inf-loop.sh &
ls /var/cache/apt/archive/*.deb
    
por GM-Script-Writer-62850 03.05.2013 / 23:36