tawheed
tawheed

Reputation: 5821

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.

Upvotes: 203

Views: 226885

Answers (3)

Ani
Ani

Reputation: 1526

In Bash:

tail -1 ${filepath}_newstap.sh

Upvotes: 6

choroba
choroba

Reputation: 241818

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.

Upvotes: 317

user539810
user539810

Reputation:

Use curly braces around the variable name:

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

Upvotes: 30

Related Questions