2015-11-18 2 views
2

Когда я запускаю свой скрипт, я вынужден ввести ключ ввода, чтобы завершить выполнение сценария после его завершения. Вот мой сценарий:Зачем мне вводить ввод для выхода из моего сценария bash?

log_file=/tmp/log.out 

rm -f $log_file 

setup() 
{ 
    exec > >(tee -a ${log_file}) 
    exec 2> >(tee -a ${log_file} >&2) 
} 

setup 

echo "hello world" 
echo "hello again" 

Я тестирую принуждая все эхо, чтобы перейти на стандартный вывод и лог-файл одновременно. Я видел это поведение раньше в сценариях и всегда задавался вопросом:

  • Почему это происходит?
  • Как сделать так, чтобы мне не приходилось вводить return для выхода из сценария?

ответ

3

Вам не нужно нажимать enter. Вы уже находитесь в следующем приглашении. Попробуйте ввести команду и нажать enter.

Проблема в том, что вы выбрали вывод и следующее приглашение напечатано на экране.

Таким образом, ваше приглашение печатается до, вывод стандартной ошибки выводится, поэтому вы «теряете» свое позиционирование курсора.

Очистка экрана, с помощью Ctrl-L, также позволит вам вернуться к вашему приглашению.

Смежные вопросы