Перенаправление 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

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

19
задан Federico Ponzi
14.05.2023 15:00 Количество просмотров материала 3644
Распечатать страницу

3 ответа

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

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

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

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

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

3
отвечен AFH 2023-05-15 22:48

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

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

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

while read line
do
  echo "$line"
done
4
отвечен Davyzhu 2023-05-16 01:05

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

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

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

cat myfile.txt; myscript.sh < myfile.txt > myfile2.txt
0
отвечен xzfc 2023-05-16 03:22

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх