web-dev-qa-db-ja.com

アンダースコアが後に続く変数のbash変数置換

変数BUILDNUMBERは値230に設定されています。コマンド230_に対してecho $BUILDNUMBER_が出力されることを期待していますが、以下に示すように出力が空です。

# echo $BUILDNUMBER_

# echo $BUILDNUMBER
230
12
Talespin_Kit

コマンドecho $BUILDNUMBER_は、設定されていない変数$BUILDNUMBER_の値を出力します(下線は、Jeff Schallerによって明示的に示されている変数名の有効な文字です)

変数名を中括弧(中括弧)で囲むか、最も厳密なprintfツールを使用する必要があります。

echo "${BUILDNUMBER}_"
printf '%s_\n' "$BUILDNUMBER"

PS:常に変数を引用してください。

27
George Vasiliou

George Vassiliouが既に 説明 をしているのは、$BUILDNUMBER_ではなく変数$BUILDNUMBERを出力しているためです。ジョージが説明したように、必要なものを取得する最良の方法は${BUILDNUMBER}_を使用することです。さらにいくつかのオプションがあります:

$ echo "$BUILDNUMBER"_
230_
$ echo $BUILDNUMBER"_"
230_
$ printf '%s_\n' "$BUILDNUMBER"
230_
8
terdon