The variable BUILDNUMBER
is set to value 230. I expect 230_
to be printed for the command echo $BUILDNUMBER_
but the output is empty as shown below.
# echo $BUILDNUMBER_
# echo $BUILDNUMBER
230
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.
Sign up to join this communityThe variable BUILDNUMBER
is set to value 230. I expect 230_
to be printed for the command echo $BUILDNUMBER_
but the output is empty as shown below.
# echo $BUILDNUMBER_
# echo $BUILDNUMBER
230
The command echo $BUILDNUMBER_
is going to print the value of variable $BUILDNUMBER_
which is not set (underscore is a valid character for a variable name as explicitly noted by Jeff Schaller)
You just need to apply braces (curly brackets) around the variable name or use the most rigid printf
tool:
echo "${BUILDNUMBER}_"
printf '%s_\n' "$BUILDNUMBER"
PS: Always quote your variables.
As George Vassiliou already explained, that's because you're printing the variable $BUILDNUMBER_
instead of $BUILDNUMBER
. The best way to get what you want is to use ${BUILDNUMBER}_
as George explained. Here are some more options:
$ echo "$BUILDNUMBER"_
230_
$ echo $BUILDNUMBER"_"
230_
$ printf '%s_\n' "$BUILDNUMBER"
230_
$IFS
holds, so echo $BUILDNUMBER"_"
is still wrong. Of the three, only printf '%s_\n' "$BUILDNUMBER"
is correct if we don't know what $BUILDNUMBER
or $IFS
hold.
Jan 31, 2019 at 8:05