Unix - Стандартный ввод и вывод - PullRequest
0 голосов
/ 20 февраля 2020
$(($one/$zero)) 2> tasty.txt >> cat.txt
$(($one/$zero)) 2> tasty.txt >> cat.txt

Мой ввод

one=1

zero=0

Почему ошибка не перенаправляется в tasty.txt, а печатается?

1 Ответ

0 голосов
/ 14 марта 2020

Потому что, когда вы выполняете команду в $ (), она открывает новую подоболочку.

:-:echo "one is $one and Zero is $zero" 
one is 1 and Zero is 0
:-:eval $one/$zero 2> error.txt
:-:cat error.txt
bash: 1/0: No such file or directory

При выполнении команды в данной оболочке ошибка перенаправляется в файл.

:-:$($one/$zero) 2> error_1.txt
bash: 1/0: No such file or directory
:-:cat  error_1.txt 

При выполнении команды в подоболочке ошибка перенаправляется на стандартный вывод.

:-:$($one/$zero 2> error_1.txt) 
:-:cat error_1.txt 
bash: 1/0: No such file or directory
:-:

Но когда я перенаправляю ошибку std в файл внутри subshell, он фиксируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...