回答編集履歴

4

コメントを回答に反映

2022/11/14 09:47

投稿

otn
otn

スコア84555

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
- ```plain
6
+ ```Bash
8
- =not pipe=
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
- #!/bin/bash
13
+ seq 3 | while read c;do ./curl.sh example.com/$c/ </dev/null ;done
14
+
18
- if [ -p /dev/stdin ];then
15
+ seq 3 | while read c;do ./curl.sh example.com/$c/ </dev/tty ;done
19
- read stdin || exit $?
16
+
20
- echo "=pipe="
21
- echo "echo ${stdin} | curl -H 'foo:bar' $@"
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
- fi
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

微修正

2022/11/10 14:54

投稿

otn
otn

スコア84555

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

微修正

2022/11/10 02:32

投稿

otn
otn

スコア84555

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

追記

2022/11/10 02:31

投稿

otn
otn

スコア84555

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
+ ```