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 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.

5

Use curly braces around the variable name:

`tail -1 ${filepath}_newstap.sh`
7

In Bash:

tail -1 ${filepath}_newstap.sh

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

James H. Sterling

James H. Sterling

Environmental Science & Climate Journalist

James Sterling reports on renewable energy developments, climate policy, ecological conservation, and green tech innovations around the globe.

Share this article
Twitter Facebook Pinterest