回答編集履歴

3

誤記訂正

2023/03/09 02:36

投稿

otn
otn

スコア85938

test CHANGED
@@ -20,6 +20,6 @@
20
20
  `echo aa bb`だと、`aa`と`bb`は別単語で、`echo`の引数は2つです。
21
21
  `echo "aa bb"`だと、`aa bb`で1つの単語で、`echo`の引数は1つです。
22
22
  このように、どこからどこまでが1つの単語か(1つの引数か)を決めるのが単語展開で引用符の有無がそれに影響します。
23
- `A='"aa bb"'; echo $A`のようなケースだと、変数展開後の`"aa`と`"bb`のそれぞれ3文字の2単語が2つの引数になります。
23
+ `A='"aa bb"'; echo $A`のようなケースだと、変数展開後の`"aa`と`bb"`のそれぞれ3文字の2単語が2つの引数になります。
24
24
 
25
25
  このあたりの詳細は、`man bash`の展開セクションを参照(英文manだと、EXPANSIONセクション)。

2

補足追記

2023/03/08 16:32

投稿

otn
otn

スコア85938

test CHANGED
@@ -22,3 +22,4 @@
22
22
  このように、どこからどこまでが1つの単語か(1つの引数か)を決めるのが単語展開で引用符の有無がそれに影響します。
23
23
  `A='"aa bb"'; echo $A`のようなケースだと、変数展開後の`"aa`と`"bb`のそれぞれ3文字の2単語が2つの引数になります。
24
24
 
25
+ このあたりの詳細は、`man bash`の展開セクションを参照(英文manだと、EXPANSIONセクション)。

1

微修正

2023/03/08 15:18

投稿

otn
otn

スコア85938

test CHANGED
@@ -1,6 +1,6 @@
1
1
  シェルのコマンドラインは、実際に指定したコマンドを実行するまで、様々な処理をされますが、
2
2
  処理ごとに**順番に一度ずつ**処理されます。
3
- 引用符の解釈(注1)は、変数展開よりも前なので、変数展開された結果、変数の中に含まれていた引用符がシェル文法的な意味での引用符と解釈されることはありません。特別な意味を持たない単なる`"`や`'`という1文字と見なされます。
3
+ 引用符の解釈(注1)は、変数展開よりも前なので、変数展開された結果、変数の中に含まれていた`"`や`'`がシェル文法的な意味での引用符と解釈されることはありません。特別な意味を持たない単なる`"`や`'`という1文字と見なされます。
4
4
 
5
5
  変数展開された結果の引用符をシェル文法的な意味での引用符と解釈させるためには、`eval`コマンドを使って、コマンドラインの解釈の2周目を行わせる必要があります。が、まるまるコマンドライン解釈を繰り返すので、却ってまずい解釈をされ可能性もあります。
6
6