14

我想做这样的事情:

cat file.txt | ./myscript.sh

文件.txt

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

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

4

3 回答 3

16

您可以使用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"
于 2013-02-11T12:37:23.440 回答
5

你可以使用这样的东西:

while read line; do
  echo $line;
done

在此处进一步阅读:Bash 脚本,从标准输入管道读取值

于 2013-02-11T12:37:48.617 回答
3

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

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

甚至写一个这样的函数:

read_from_pipe() { read "$@" <&0; }
于 2013-02-11T12:36:06.980 回答