Bash скрипт, чтение тайм-аута - PullRequest
1 голос
/ 01 апреля 2020

С приведенным ниже сценарием, если я нажму на return, все работает нормально. и все как обычно, когда я выхожу.

Однако, если вместо этого я жду истечения времени ожидания, то я получаю эхо-сигналы, которые я ожидаю, но при выходе и возвращении к терминалу. Приглашение linux сбито с толку, и я получаю несколько подсказок терминала в строке, и я не вижу команд, которые я ввожу.

#!/bin/bash
read -t 5 -e -p "INFO: Do you want to do more stuff? [n]: " RESPONSE
if [ "$RESPONSE" != "y" ] ; then
  echo "INFO: Not doing anything anymore"
else
  echo "INFO: doing more stuff"
fi
echo "INFO: completely done"
exit 0

Любая идея, что мне нужно сделать в сценарии, чтобы убедиться, что все это возвращается в нормальное состояние, когда я выхожу?

Я изменил это сейчас, и проблема исчезла:

#!/bin/bash
read -t 5 -p "INFO: Do you want to do more stuff? [n]: " RESPONSE
if [ $? -ne 0]; then
   echo
fi
if [ "$RESPONSE" != "y" ] ; then
  echo "INFO: Not doing anything anymore"
else
  echo "INFO: doing more stuff"
fi
echo "INFO: completely done"
exit 0

кажется, -e (использование readline) вызывало у меня проблему, дон не совсем понимаю, почему. Бег на Centos 6.8

1 Ответ

0 голосов
/ 01 апреля 2020

Это просто дополнительная новая строка, которую вы получаете в первом случае при вводе ввода. Если проблема заключается в том, как выглядит вывод, вы всегда можете добавить дополнительный символ новой строки после прочтения:

#!/bin/bash
read -t 5 -e -p  "INFO: Do you want to do more stuff? [n]: "$'\n' RESPONSE
if [ "$RESPONSE" != "y" ] ; then
  echo "INFO: Not doing anything anymore"
else
  echo "INFO: doing more stuff"
fi
echo "INFO: completely done"
exit 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...