Variable Interpolation in the Shell
I Have a Variable Called Filepath=/Tmp/Name. to Access the Variable, I Know That I Can Do This: $Filepath in My Shell Script I Attempted to Do Something Like...
I have a variable called filepath=/tmp/name.
To access the variable, I know that I can do this: $filepath
In my shell script I attempted to do something like this (the backticks are intended)
`tail -1 $filepath_newstap.sh`
This line fails, duuh!, because the variable is not called $filepath_newstap.sh
How do I append _newstap.sh to the variable name?
Please note that backticks are intended for the expression evaluation.
3 Answers
Use
"$filepath"_newstap.sh
or
${filepath}_newstap.sh
or
$filepath\_newstap.sh
_ is a valid character in identifiers. Dot is not, so the shell tried to interpolate $filepath_newstap.
You can use set -u to make the shell exit with an error when you reference an undefined variable.
Use curly braces around the variable name:
`tail -1 ${filepath}_newstap.sh`
In Bash:
tail -1 ${filepath}_newstap.sh