Как я могу напечатать на стандартный вывод из ловушки, вызванной во время eval - PullRequest
0 голосов
/ 04 февраля 2019

Я ожидал, что следующий скрипт напечатает This is redirected to 'output'. при нажатии ctrl + c :

#!/bin/bash

trap_function(){
    trap '' EXIT INT TERM
    echo "This is redirected to 'output'."
    touch this_will_exist
}
trap trap_function EXIT INT TERM

eval "sleep 100" &> output

Вместо этого ничего не отображается, а текстидет в файл output.Как я могу избежать перенаправления из trap_function и получить текст, отображаемый для пользователя?

echo "This is redirected to 'output'." > /dev/stdout не дает желаемого эффекта.

Я запускаю GNU bash, версия 4.3.48 в Ubuntu 16.04.5 LTS.

1 Ответ

0 голосов
/ 04 февраля 2019

Обходной путь должен запустить eval в подоболочке:

#!/bin/bash

trap_function(){
    trap '' EXIT INT TERM
    echo "This is redirected to 'output'."
    touch this_will_exist
}
trap trap_function EXIT INT TERM

(eval "sleep 100") &> output
...