[JM:00525] Re: [POST:DO] bash bash.1 (EXPANSION 2)

Back to archive index

長南洋一 cyoic****@maple*****
2011年 12月 6日 (火) 21:55:30 JST


長南です。

Takahashi さんのメールより [JM:00524]
>
> 訳文提出から 3 か月、これからもよろしくお願いします。

さすがに 12 月は忙しくて ... お手伝いできるかどうか。

>> 原文と変数間接参照の例は残しておきます。
>>
>> 原文
>>  If  the  first  character  of  parameter is an exclamation point (!),
>>  a level of variable indirection is introduced.
>>  Bash uses the value of the variable formed from the rest of
>>  parameter as the name of the variable; this variable is then
>>  expanded and that value is used in the rest of the substitution,
>>  rather than the value of parameter itself.
>>
>> 変数間接参照の例
>>  $ AAA=BBB; BBB=zzz; echo ${!AAA}
>>  zzz

> で、改めて原文を見ると以下のとおりです。
> 
>     and that value is used in the rest of the substitution, rather
>     than the value of parameter itself.
> 
> ここで“rather than the value of parameter itself”というのは、この項で
> ある ${parameter} の一般的な動作を指し、それと比較して、「parameter が
> “!”で始まるときは(parameter は値を持たないので)〜」ということを指す、
> と解釈すれば、原文は矛盾していないことになります。
> 
> 一般論としては、原文が矛盾している前提の解釈と、原文が矛盾していな
> い前提の解釈があるときは、後者のほうがよいのではないかと思います。
> 
> というわけで、該当部分を以下のとおり変更します。
> 
>     そして、parameter ではなく、この値を使って置換を行います。

まあ、大雑把に言えば、そういうことなんですが、原文にある the rest,
the value (of parameter), itself といった単語を省略してしまうのは、
よいことだとは思えません。それでは、翻訳でなく要約になってしまいますから。

それに、解釈が定まらなければ、訳文についての判断はできません。
ですから、この訳文について、今のところは、コメントしないことにします。

>>> ・それに続く部分は“Bash uses the value of the variable formed from
>>>  the rest of parameter as the name of the variable”とあります
>>> →上記で parameter が“!AAA”を指すと考えたことにより、必然的に
>>>  “variable formed from the rest of parameter”とある変数は、“AAA”を
>>>  指します
>>
>> ここまでは、わたしの解釈も同じです。
>>
>>> ・ここではまだ“Bash uses the value〜”すなわち“use”の段階です
>>> →つまり、変数の value の用途を説明している段階です
>>
>> ここで解釈が別れるんですね。上で引用なさっている文から "the value of
>> the variable" を修飾している部分を取ってしまうと、こうなります。
>>
>>  Bash uses the value of the variable ... as as the name of the variable
>>
>> 「変数 (AAA) の値 (BBB) を変数名として使う」ですから、使用する
>> 変数名は BBB になるわけです。
> 
> 原文は以下のとおりですね。
> 
>     Bash uses the value of the variable formed from the rest of
>     parameter as the name of the variable
> 
> 私の解釈を繰り返すと、"variable formed from the rest of parameter as
> the name of the variable"(parameter の残りの部分が変数名であるものとし
> て形成した変数)とある“variable”(変数)が AAA を、それに対する
> "value of" とある“value”(値)がBBB を指します。

ああ、そうお取りになったのですか。わたしとは as の付き方の理解が
違うのですね。高橋さんのような解釈も可能なのかもしれませんが、
かなりひねった読み方だと思います。"Bash uses the value of the variable
... as the name of the variable" と読む、もっと自然な読み方もあるわけ
ですから。読み方が幾通りか考えられるときは、一番単純な読み方がたいてい
正しいものです。 そういう考え方をオッカムの剃刀と言うんでしたっけ。

なお、"the value of the variable" と "the name of the variable" で 、
"the variable" と同じだから、両方とも同じものとお考えになったので
しょうが、構文を "uses ... as ..." と見れば、別のものと解釈できます。 

>>> ・その後に“this variable is then〜”と続きます
>>> →つまり、この“this variable”は上の変数と同じものを指すのが自然です。
>>>  すなわち“AAA”を指すと考えます
>>
>> わたしの解釈では、"this variable" は、前の文で変数名が決まった、その変数
>> (BBB) ということになります。
> 
> 上記により、私の解釈では“this variable”が AAA を指します。

わたしの場合は、前の文の "Bash uses the value of the variable ...
as the name of the variable" で「AAA の値を変数名として使う」とまで
言っていると考えるので、"then" は「続いて、さらに、次に」という意味に
なり、"this variable" は、前の文で "the name of the variable" と言った
その variable (BBB) になるわけです。このとき、わたしが前のメールで述べた
「this は近くにあるものを指す」ということが補強材料になります。

>>> ・この“BBB”は、その直後で“used in the rest of the substitution,
>>>  rather than the value of parameter itself.”とあります
>>> →つまり、BBB について“used in the rest of the substitution”と
>>>  “(used) the value of parameter itself”と 2 つの選択肢(use=用途)が
>>>  あるうち、前者を適用する、ということを説明しています。前者は、“BBB を
>>>  zzz にsubstitute すること”を、後者は“BBB のまま展開結果とすること”
>>>  を指しています
>>
>> use は二重目的語を取りませんから、そう解釈するには、“(used) for the
>> value of parameter itself”と、原文に for (あるいは、as) が必要だと
>> 思います。
> 
> “bash uses the variable”という英語構文はおかしい、という意見
> でしょうか?

いや、おかしくないですよ。高橋さんが前のメールで “(used) the value
of parameter itself" とおっしゃっていたので、

  that value is used in ... , rather than (that value is used) the
  value of parameter itself.

ということだろうと思い、それなら、use は二重目的語を取らないから、
"the value of parameter itself" の前に for か as が必要だと言った
だけです。高橋さんの御解釈が、"rather than" 以下の意味は、能動態で
書けば、"bash uses the value of parameter itself ..." だということなら、
わたしの解釈と変わりません。原文をきちんと展開すると、こういうことに
なります。

  that value is used in ... , rather than the value of parameter itself
  (is used in ...).

素直に訳しておくと、

  その値が置換の残りの過程で使われます。parameter そのものの値が
  (置換の残りの過程で) 使われるわけではありません。

これで納得していただけるとよいのですが、納得していただけないで
しょうね。もう、わたしとしては言えることは言ってしまったので、
そろそろ他の方の御意見をうかがうところではないかと思います。
両方とも間違っていると言われるかもしれませんが。

-- 
長南洋一




linuxjm-discuss メーリングリストの案内
Back to archive index