Похожие вопросы

Проблема с find: недопустимый предикат "- delete"
libtool установлен, но не найден в /usr / bin
Как проверить, доступно ли подключение к Интернету через терминал
Запустить mplayer из bash в фоновом режиме без дополнительного bash
В чем разница между set, env, declare и export при установке переменной в оболочке Linux?
Запуск сценария bash из docky
Командная строка Bash перезаписывает текущую строку
Как сделать копию файла в том же каталоге
Имена файлов Linux и Тильда--не для домашнего каталога--в bash
Можно ли задать wget для отображения времени передачи в миллисекундах?
Использование r в bash PS1
Что мне нужно сделать, чтобы смонтировать USB-накопитель в ArchLinux
Как настроить задание Jenkins на определенный сервер для развертывания?
Как скопировать несколько файлов и переместить их в несколько папок с помощью терминала для Mac
Почему я получаю "rvm: команда не найдена" на Ubuntu?

Перенаправление stdin в stdout

у меня есть сценарий, бывший myscript.sh, и он должен перенаправить на stdout то, что он получает от stdin (как кошка).

например:

myscript.sh < myfile.txt > myfile2.txt

как это сделать?

кроме того, как я могу перенаправить stdout в другой файл, а не myfile2.txt?

моя пытается:

Я пробовал использовать:

echo $*

и он работает только через:

myscript.sh | cat myfile.txt

если я использую:

myscript.sh < myfile.txt

выводит ничего

5
задан Federico Ponzi
источник

3 ответов

Я не могу понять, чего вы хотите: $* выводит позиционные параметры, и вы не указали их, поэтому вы не получили вывода (кроме новой строки).

cat не читает стандартный ввод, когда ему дается файл list, поэтому myscript.sh | cat myfile.txt аналогично myscript.sh ; cat myfile.txt (не совсем верно, но правильно с точки зрения ввода/вывода).

если вы хотите, чтобы ваш скрипт копировал входные данные в выходные, то он должен содержать просто cat.

если вы хотите выводим из$*, затем нужно выполнить myscript.sh {parameters}.

и что вы подразумеваете под " перенаправить stdout в другой файл, а не myfile2.txt"? По-видимому, вы не имеете в виду ... > myfile3.txt.

3
отвечен AFH 2014-07-17 11:26:50
источник

попробуйте добавить cat <&0 к вашему скрипту, где вы хотите выполнить перенаправление.

на &0 выше, представляет собой stdin файловый дескриптор, и вы по существу помещаете вещи, которые вы получаете от stdin to cat.

в качестве альтернативы, используйте следующий цикл, чтобы сделать это самостоятельно:

while read line
do
  echo "$line"
done
4
отвечен Davyzhu 2014-07-17 14:36:50
источник

Я думаю, что вы хотите дублировать сценарий к выходной клемме, а не редирект.

cat myfile.txt | tee /dev/tty | myscript.sh > myfile2.txt

или даже проще

cat myfile.txt; myscript.sh < myfile.txt > myfile2.txt
0
отвечен xzfc 2014-07-17 10:53:28
источник

Другие вопросы bash command-line linux redirection