回答編集履歴

1

コメントに対しての回答追記

2023/08/30 03:08

投稿

pecmm
pecmm

スコア406

test CHANGED
@@ -19,3 +19,36 @@
19
19
  ```
20
20
  こんな感じに改造すれば目的達成できないでしょうか。
21
21
  (tail +2 でヘッダ行を捨てています)
22
+
23
+
24
+ ## コメントに対しての回答追記
25
+ > この$idを複数のSQLで活用したくif文の外で$idを使う方法
26
+
27
+ ### if文
28
+ ここでいうif文とは、`if [[ $? -eq 0 ]]; then` のことでしょうか?
29
+ であれば、そもそもif文の中でも外でも同じように使えます。
30
+
31
+ ${DB2}に対するクエリをif文の中で全部処理してもいいですし、
32
+ 単にネストが嫌ならばif文の1つ目のクエリ成功チェックを下記のように変更してその後の処理は普通に記述してもよいでしょう。
33
+ ```
34
+ if [[ $? -ne 0 ]]; then
35
+ echo "db error."
36
+ exit 1
37
+ fi
38
+
39
+ echo "${result}" | tail +2 | while read id
40
+ do
41
+ (以下略)
42
+ ```
43
+
44
+ ### 複数のSQLで活用
45
+
46
+ 最終的な目標はなんでしょうか?
47
+ $idを複数のSQLで活用したい、というのが具体的に何をしたいのか見当つきませんでした。
48
+
49
+ 「別のSELECT文で配列のidに部分一致する行を抽出」というのが、私が最初に提示したような方法では解決できなかったということでしょうか?
50
+
51
+ 「出来たけど、さらに他のクエリでも使用したい」のであれば、 while文の do~done の間にさらに複数のクエリ実行を追加できます。
52
+ 「ループでid 1件ずつ処理するではなく、まとめて1つにして複雑なクエリに含めたい」というのであれば、また別の手法を示します。
53
+ 「1つ目のクエリで抽出されたidが多く、1件ずつはあまり現実的でない解法だった」という場合も、まとめて1つのクエリにすれば対応できます。
54
+