アンダースコアが続く変数の Bash 変数置換

アンダースコアが続く変数の Bash 変数置換

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

# echo $BUILDNUMBER_

# echo $BUILDNUMBER
230

答え1

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

変数名の周りに中括弧 (波括弧) を適用するか、最も厳格なprintfツールを使用するだけです。

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

PS: 変数は常に引用符で囲んでください。

答え2

ジョージ・ヴァシリウがすでに述べたように説明$BUILDNUMBER_の場合、ではなく変数を印刷しているためです$BUILDNUMBER。 目的の結果を得るための最善の方法は、George が説明したように を使用することです${BUILDNUMBER}_。 他にいくつかのオプションがあります。

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

関連情報