14

私はそのようなことをしたいです:

cat file.txt | ./myscript.sh

file.txt

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

myscript.shのデータを読み取るにはどうすればよいですか?

4

3 に答える 3

16

これは (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"
于 2013-02-11T12:37:23.440 に答える
5

次のようなものを使用できます。

while read line; do
  echo $line;
done

ここでさらに読む: Bash スクリプト、stdin パイプから値を読み取る

于 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 に答える