回答編集履歴
4
コメントを回答に反映
test
CHANGED
@@ -2,35 +2,18 @@
|
|
2
2
|
ファイル全体でなく、1行だけ読みたいということであれば、
|
3
3
|
`cat`でなく`head -1`を使うか、`read`コマンドを使うか。つまり、`stdin=$(cat -)`でなく`read stdin`。
|
4
4
|
## 追記
|
5
|
-
|
5
|
+
もしかして、
|
6
|
-
「期待した出力」は、`echo "${stdin}"`が1行ずつ出力する、
|
7
|
-
```
|
6
|
+
```Bash
|
8
|
-
|
7
|
+
for i in $(seq 3); do ./curl.sh example.com/$c/; done
|
9
|
-
1
|
10
|
-
=not pipe=
|
11
|
-
2
|
12
|
-
=not pipe=
|
13
|
-
3
|
14
8
|
```
|
9
|
+
のようなことが本当にしたいことでしょうか?
|
10
|
+
|
15
|
-
|
11
|
+
あるいは、
|
16
|
-
```sh
|
12
|
+
```Bash
|
17
|
-
|
13
|
+
seq 3 | while read c;do ./curl.sh example.com/$c/ </dev/null ;done
|
14
|
+
か
|
18
|
-
i
|
15
|
+
seq 3 | while read c;do ./curl.sh example.com/$c/ </dev/tty ;done
|
19
|
-
|
16
|
+
か
|
20
|
-
echo "=pipe="
|
21
|
-
|
17
|
+
seq 3 | xargs -i sh -c './curl.sh example.com/{}/'
|
22
|
-
#echo "${stdin}" | curl -H "foo:bar" $@
|
23
|
-
else
|
24
|
-
echo "=not pipe"=
|
25
|
-
#curl -H "foo:bar" $@
|
26
|
-
|
18
|
+
か?
|
27
19
|
```
|
28
|
-
```sh
|
29
|
-
$ seq 3 | while ./curl.sh URL; do : ;done
|
30
|
-
=pipe=
|
31
|
-
echo 1 | curl -H 'foo:bar' URL
|
32
|
-
=pipe=
|
33
|
-
echo 2 | curl -H 'foo:bar' URL
|
34
|
-
=pipe=
|
35
|
-
echo 3 | curl -H 'foo:bar' URL
|
36
|
-
```
|
3
微修正
test
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
if [ -p /dev/stdin ];then
|
19
19
|
read stdin || exit $?
|
20
20
|
echo "=pipe="
|
21
|
-
echo "${stdin}"
|
21
|
+
echo "echo ${stdin} | curl -H 'foo:bar' $@"
|
22
22
|
#echo "${stdin}" | curl -H "foo:bar" $@
|
23
23
|
else
|
24
24
|
echo "=not pipe"=
|
@@ -26,11 +26,11 @@
|
|
26
26
|
fi
|
27
27
|
```
|
28
28
|
```sh
|
29
|
-
$ seq 3 | while /curl.sh; do : ;done
|
29
|
+
$ seq 3 | while ./curl.sh URL; do : ;done
|
30
30
|
=pipe=
|
31
|
-
1
|
31
|
+
echo 1 | curl -H 'foo:bar' URL
|
32
32
|
=pipe=
|
33
|
-
2
|
33
|
+
echo 2 | curl -H 'foo:bar' URL
|
34
34
|
=pipe=
|
35
|
-
3
|
35
|
+
echo 3 | curl -H 'foo:bar' URL
|
36
36
|
```
|
2
微修正
test
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
いまいち、ポイントが不明ですが(`while read c;`の`read c`の意図が不明)、
|
2
2
|
ファイル全体でなく、1行だけ読みたいということであれば、
|
3
3
|
`cat`でなく`head -1`を使うか、`read`コマンドを使うか。つまり、`stdin=$(cat -)`でなく`read stdin`。
|
4
|
-
##追記
|
4
|
+
## 追記
|
5
5
|
なんとなくわかった。
|
6
6
|
「期待した出力」は、`echo "${stdin}"`が1行ずつ出力する、
|
7
7
|
```plain
|
1
追記
test
CHANGED
@@ -1,3 +1,36 @@
|
|
1
1
|
いまいち、ポイントが不明ですが(`while read c;`の`read c`の意図が不明)、
|
2
2
|
ファイル全体でなく、1行だけ読みたいということであれば、
|
3
3
|
`cat`でなく`head -1`を使うか、`read`コマンドを使うか。つまり、`stdin=$(cat -)`でなく`read stdin`。
|
4
|
+
##追記
|
5
|
+
なんとなくわかった。
|
6
|
+
「期待した出力」は、`echo "${stdin}"`が1行ずつ出力する、
|
7
|
+
```plain
|
8
|
+
=not pipe=
|
9
|
+
1
|
10
|
+
=not pipe=
|
11
|
+
2
|
12
|
+
=not pipe=
|
13
|
+
3
|
14
|
+
```
|
15
|
+
では?
|
16
|
+
```sh
|
17
|
+
#!/bin/bash
|
18
|
+
if [ -p /dev/stdin ];then
|
19
|
+
read stdin || exit $?
|
20
|
+
echo "=pipe="
|
21
|
+
echo "${stdin}"
|
22
|
+
#echo "${stdin}" | curl -H "foo:bar" $@
|
23
|
+
else
|
24
|
+
echo "=not pipe"=
|
25
|
+
#curl -H "foo:bar" $@
|
26
|
+
fi
|
27
|
+
```
|
28
|
+
```sh
|
29
|
+
$ seq 3 | while /curl.sh; do : ;done
|
30
|
+
=pipe=
|
31
|
+
1
|
32
|
+
=pipe=
|
33
|
+
2
|
34
|
+
=pipe=
|
35
|
+
3
|
36
|
+
```
|