teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

回答追記:補足の追加

2017/02/02 02:06

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -39,4 +39,21 @@
39
39
  for var in a b c; do
40
40
  echo ${var}
41
41
  done
42
- ```
42
+ ```
43
+
44
+ ----
45
+ 補足
46
+
47
+ bashのマニュアルの```<<'EOF'```該当部は以下です。が文章がわかり辛いので[(Qiita)bashのヒアドキュメントを活用する](http://qiita.com/take4s5i/items/e207cee4fb04385a9952#変数展開コマンド置換)を読んでいただければと思います。
48
+
49
+ > $ man bash
50
+ > ヒアドキュメントの形式を以下に示します:
51
+ >
52
+ > <<[-]word
53
+ > here-document
54
+ > delimiter
55
+ >
56
+ > word に対するパラメータ展開・コマンド置換・算術式展開・パス名展開は全く
57
+ > 行 わ れません。 **word が一部でもクォートされている場合**は、 delimiter は
58
+ > word のクォートをほどいた結果 (クォート文字を削除した結果) となり、
59
+ > **ヒアド キュメントに含まれる行では展開が行われなくなります**。

1

回答編集:

2017/02/02 02:06

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -19,15 +19,18 @@
19
19
  done
20
20
  ```
21
21
 
22
- これを解決するには以下のようにしてください。
22
+ これを解決するには以下のようにしてください。```<<EOF```ではなく```<<'EOF'```
23
23
 
24
24
  ```bash
25
25
  export var=foobar
26
- bash << 'EOF'
26
+ /bin/bash <<'EOF'
27
27
  for var in a b c; do
28
28
  echo ${var}
29
29
  done
30
30
  EOF
31
+ a
32
+ b
33
+ c
31
34
  ```
32
35
 
33
36
  この場合、bashに渡されるヒアドキュメントに記述したスクリプトは以下となります。