Как запустить две части кодов Bashscript одновременно, когда одна из них бесконечна в то время как цикл

У меня есть этот код сценария bash, и я хочу запустить команду чтения рядом с циклом while, поскольку команда чтения извлекает данные от пользователя и сохраняет их в каком-то файле, а цикл while выполняет проверку на что-то связанное, поэтому любые предложения, такие как делать их в обоих терминалах или что-то подобное

Спасибо

 #!/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

2 ответа

Решение

Вот как я это делаю:

#!/bin/bash

a=0

function ACTION ()
{
if [[ "$bb" == "Q" || "$bb" == "q" ]]; then
    echo "Good bye!"
    exit 0
else 
    echo -e "\n\nYou pressed $bb.\n\n"
fi
}

while true; do
    read -t 1 -n 1 bb && ACTION
    echo -ne "Hello $a times. Hit \"q\" to quit."'\r' 
    a=`echo "$a + 1" | bc`
done
exit 0

И это то, на что Энди ответил в http://stackoverflow.com/ и отлично работает здесь.

Скрипт его (я только что добавил часть ловушки, поскольку он говорит, что терминал будет в странном состоянии, если скрипт будет убит):

#!/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

Я бы сделал инф. зацикливать свой собственный отдельный скрипт, а затем, когда я запускаю его, ставьте после него

#!/ Bin/ Баш
cat /var/log/dmesg
~/inf-loop.sh &
ls /var/cache/apt/archive/*.deb
Другие вопросы по тегам