我想做类似于那样的事情:
cat file.txt | ./myscript.sh
file.txt
http://google.com
http://amazon.com
...
我该如何在myscript.sh中读取数据?
我想做类似于那样的事情:
cat file.txt | ./myscript.sh
file.txt
http://google.com
http://amazon.com
...
我该如何在myscript.sh中读取数据?
您可以使用while循环
(逐行处理)来完成此操作,这是这种情况的常见方式:
#!/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"
read
接受管道输入:echo "hello world" | { read test; echo test=$test; }
read_from_pipe() { read "$@" <&0; }
read
。问题不是从管道中读取数据,而是 read
设置的变量位于子shell中,在管道完成后就会消失。 - chepner
#!/bin/bash
之后)直接使用cat命令:cat|sed 's/abc/def/g'
。 - valid