编写从管道读取的bash脚本

时间:2013-02-11 12:32:44

标签: bash

我想做那样的事情:

cat file.txt | ./myscript.sh

file.txt的

http://google.com
http://amazon.com
...

如何读取myscript.sh中的数据?

3 个答案:

答案 0 :(得分:10)

您可以使用while loop(逐行处理)执行此操作,这是此类事情的常用方法:

#!/bin/bash

while read a; do
    # something with "$a"
done

有关更多信息,请参阅http://mywiki.wooledge.org/BashFAQ/001


如果您想要 slurp 变量中的整个文件,请尝试这样做:

#!/bin/bash

var="$(cat)"
echo "$var"

#!/bin/bash

var="$(</dev/stdin)"
echo "$var"

答案 1 :(得分:2)

你可以欺骗read接受这样的管道:

echo "hello world" | { read test; echo test=$test; }

甚至写一个这样的函数:

read_from_pipe() { read "$@" <&0; }

答案 2 :(得分:2)

您可以使用以下内容:

while read line; do
  echo $line;
done

在此处进一步阅读:Bash script, read values from stdin pipe