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

アーカイブの一覧に戻る

Masakazu Takahashi emasa****@gmail*****
2011年 12月 4日 (日) 20:46:22 JST


訳文提出から 3 か月、これからもよろしくお願いします。

2011/12/1 長南洋一 <cyoic****@maple*****>:
> 長南です。
>
> 原文と変数間接参照の例は残しておきます。
>
>>> 原文
>>>  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
>
> Takahashi さんのメールより [JM:00520]
>>
>> 私が [JM:00514] と [JM:00517] で説明した内容を、改めて順を追って、より
>> 細かく繰り返します。
>
> 詳しく説明してくださったおかげで、高橋さんとわたしの考えが
> どこで食い違っているか、よくわかりました。
>
>> ・“parameter” は、“AAA”ではなく“!AAA”を指します
>> ←直前で“If the first character of parameter is an exclamation point”
>>  と書かれていることによります
>> →“!AAA”は変数ではないので値を持ちません。そのため、「parameter その
>>  ものの値」という言葉は辻褄があいません
>
> それで「辻褄が合わない」とおっしゃっていたのですか。わかりました。
> わたしは、事実レベルのことではなく、文章の解釈か、訳文のレベルの
> ことだと思っていました。「辻褄が合わない」とはどういうことですかと、
> 素直にうかがえばよかったと思います。

「辻褄が合わない」という主張を「矛盾する」などと言い換えたほうがよかっ
たのでしょうね。失礼しました。


> この件については、わたしも気がついていました。最初は、「かりに !AAA
> という変数があっても、そちらが使われるのではなく ...」ということだと
> 考えていました。でも、どうやら !AAAという変数は作成できないようです。
> とすると、「parameter そのものの値は (置換に) 使用しません」という
> 文章は、当たり前すぎて、言うだけの意味がないことになります。
>
> しかし、原文は "the value of parameter itself (パラメータそのものの値)"
> と言っているわけです。
>
> 確かに、実際の動作のレベルでは言う意味がありません。"the value of
> parameter itself" はナンセンスだと言ってもよいでしょう。でも、言葉の
> レベルでは、意味があるのではないでしょうか。「parameter の先頭文字が
> ! の場合は、parameter の値が使われるわけではありません」というのは、
> それは実際その通りなんですから。変数 !AAA なんて、実際にはありえない
> としても。
>
> 要するに、「parameter の先頭文字が ! の場合、! は変数名の最初の文字
> ではなく、変数間接参照の印である」ということを、別の形で言っているのだ
> と思います。
>
> わたしとしては、"that value is used ..., rather than the value of
> parameter itself" のような文章は、あまり深く考えずに、文章の表面だけを
> 追って訳しておけばよいのではないかと思います。語尾を工夫する必要は
> あるかもしれませんけれど。

なるほど、自分でコピー&ペーストしていて見落していました。

で、改めて原文を見ると以下のとおりです。

    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 ではなく、この値を使って置換を行います。

https://github.com/emasaka/bash-jman/commit/766c3c018d5ff381c689e2a758ce7e82c0090151


>> ・それに続く部分は“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 を指します。

この段階では、「BBB を使う」と言っているだけで「BBB が変数である」また
は「BBB を展開する」とは原文では言っていません。


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

上記により、私の解釈では“this variable”が AAA を指します。


> this と言っていることが、補強材料になります。this というのは、
> 近いものを指すわけでしょう。それで、"Bash uses the value of the
> variable" の "the variable" ではなく、直前にある "the name of the
> variable" の "the variable" を指すことになります。
>
> というわけで、以下ひとつづつ解釈がずれていくわけです。
>
>> ・この“this variable”すなわち AAA は、“expanded”すなわち展開されます
>> →その結果は“BBB”です
>>
>> ・その直後に“that value is used〜”と続きます
>> →つまり、“that value”は上と同じものを指すのが自然です。すなわち
>>  “BBB”を指すと考えます
>
> "that value" が "this variable" の値だ、という点では同意見で、
> ただ、それが BBB か zzz かという解釈が違うわけですね。
>
>> ・この“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”という英語構文はおかしい、という意見
でしょうか?


> それに、その解釈では、"the value of parameter itself" が
> 存在することになりませんか。

そうですね。それも含めて、上記のとおり訳を変更しました。

-- 
Masakazu Takahashi (emasaka)




linuxjm-discuss メーリングリストの案内
アーカイブの一覧に戻る