Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How can I concatenate strings and variables in a shell script?

stringOne = "foo"

stringTwo = "anythingButBar"

stringThree = "? and ?"

I want to output "foo and anythingButBar"

share|improve this question
up vote 25 down vote accepted

Nothing special, you just need to add them to your declaration.

for example:

[Zypher@host01 monitor]$ stringOne="foo"
[Zypher@host01 monitor]$ stringTwo="anythingButBar"
[Zypher@host01 monitor]$ stringThree=$stringOne$stringTwo
[Zypher@host01 monitor]$ echo $stringThree 
fooanythingButBar

if you want the literal word 'and' between them:

[Zypher@host01 monitor]$ stringOne="foo"
[Zypher@host01 monitor]$ stringTwo="anythingButBar"
[Zypher@host01 monitor]$ stringThree="$stringOne and $stringTwo"
[Zypher@host01 monitor]$ echo $stringThree 
foo and anythingButBar
share|improve this answer
4  
If I might make a suggestion, your prompt is noisy and obscures your answer (and a space after the dollar sign would help readability). Something like $ stringOne="foo", for example. Also, the prompt shouldn't appear on an output line (the lines after the echos). Otherwise +1. – Dennis Williamson Jan 27 '11 at 22:31
8  
echo ${stringOne}and${stringTwo} if you don't want spaces – max taldykin Jan 28 '11 at 9:41
    
You can also do stringThree=$stringOne" and "$stringTwo. – Armfoot Dec 4 '15 at 11:38

If instead you had:

stringOne="foo"
stringTwo="anythingButBar"
stringThree="%s and %s"

you could do:

$ printf "$stringThree\n" "$stringOne" "$stringTwo"
foo and anythingButBar
share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .