2016-05-18 4 views
2

Предположим, что сценарий мой вызывается так:перенаправлять вывод команды в сценарии, выход которого перенаправляется

(script.sh 1>&2) 2>err 

Есть ли способ, чтобы перенаправлять вывод одного из команды, выполняемые скриптом, до стандартный вывод? Я попытался сделать 2>&1 для этой команды, но это не помогло. Это answer предлагает решение для командной строки Windows и перенаправляет его в файл вместо стандартного вывода.

Для простого примера предположим, что сценарий:

#!/bin/sh 
# ... many commands whose output will go to `stderr` 
echo aaa # command whose output needs to go to `stdout`; tried 2>&1 
# ... many commands whose output will go to `stderr` 

Как вызвать выход из этой echo пойти в stdout (признак того, что было бы, что он появится на экране) когда скрипт вызывается, как показано выше?

+0

Просьба показать дополнительную информацию. – 123

+0

@ 123 Я добавил пример. – AlwaysLearning

+0

Вы можете использовать 'echo Hi>/dev/tty', если хотите, чтобы он явно отображался на экране. –

ответ

3

Отправить его в стандартный вывод сценария

echo this goes to stderr 
echo so does this 
echo this will end up in stdout >&2 
echo more stderr 

Запуск

{ ./script.sh 3>&2 2>&1 1>&3 ; } 2>err 

эээ содержит

this goes to stderr 
so does this 
more stderr 

на стандартный вывод

this will end up in stdout 
+0

Есть 3 здесь как 'temp' в' swap'? – AlwaysLearning

+0

@AlwaysLearning Нет, это просто дескриптор файла, это просто указывает на то, на что указывает stderr (& 2). Я думаю, что есть лучший способ переключения дескрипторов, но я не могу вспомнить, как это сделать. – 123

+1

Я думаю, что ответ на вопрос, который я хотел спросить, это «да». Это просто как замена двух указателей в 'C++' :) Отлично и работает! – AlwaysLearning

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