Напишите bash script, который читается из трубы Я хотел бы сделать что-то вроде этого: cat file.txt | ./myscript.sh file.txt http://google.com http://amazon.com ... Как читать данные в myscript.sh? Ответ 1 Вы можете сделать это с помощью while loop (процесс за строкой), это обычный способ для таких вещей: #!/bin/bash while read a; do # something with "$a" done Для получения дополнительной информации см. http://mywiki.wooledge.org/BashFAQ/001 Если вместо этого вы захотите разбить целый файл в переменной, попробуйте сделать это: #!/bin/bash var="$(cat)" echo "$var" или #!/bin/bash var="$(</dev/stdin)" echo "$var" Ответ 2 Вы можете обмануть read для приема из такого канала: echo "hello world" | { read test; echo test=$test; } или даже написать такую функцию: read_from_pipe() { read "[email protected]" <&0; } Ответ 3 Вы можете использовать что-то вроде этого: while read line; do echo $line; done Подробнее здесь: Bash script, читать значения из stdin pipe
Ответ 1 Вы можете сделать это с помощью while loop (процесс за строкой), это обычный способ для таких вещей: #!/bin/bash while read a; do # something with "$a" done Для получения дополнительной информации см. http://mywiki.wooledge.org/BashFAQ/001 Если вместо этого вы захотите разбить целый файл в переменной, попробуйте сделать это: #!/bin/bash var="$(cat)" echo "$var" или #!/bin/bash var="$(</dev/stdin)" echo "$var"
Ответ 2 Вы можете обмануть read для приема из такого канала: echo "hello world" | { read test; echo test=$test; } или даже написать такую функцию: read_from_pipe() { read "[email protected]" <&0; }
Ответ 3 Вы можете использовать что-то вроде этого: while read line; do echo $line; done Подробнее здесь: Bash script, читать значения из stdin pipe