4

私はGNU makeマニュアルで次のことを読んでいます:

if you do not want any whitespace characters at the end of your variable value, 
you must remember not to put a random comment on the end of the line after some whitespace, such as this:

 dir := /foo/bar    # directory to put the frobs in
Here the value of the variable dir is ‘/foo/bar    ’ (with four trailing spaces), 
which was probably not the intention. (Imagine something like ‘$(dir)/file’ with this definition!)

以下のような単純なメイクファイルで試してみました」

foo := hi    # four trailing spaces
all:
    @echo $(foo)_

「make」を実行すると、「hi _」だけが出力され、「hi」とアンダースコアの間にスペースが 1 つだけ入ります。なぜ4つのスペースがないのですか?

ありがとう、

4

1 に答える 1

3

このmakeスクリプトを実行すると、エコーに変数が渡されず、代わりにの値に置き換え$(foo)られfooます。

したがって、実際に実行されるスクリプトは次のとおりですecho hi...._(ドットは明確にするためのものです)。

そして、 の引数を解析するときに空白は無視されましたecho

二重引用符を付けて、文字列として出力することができます。

echo "$(foo)_"
于 2012-11-12T10:49:48.367 に答える