Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. 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

I need to create a script with a loop through a list of items. I want to insert a string in the script.

I tried:

for i in "
 echo "test "$i

But that only outputs one string:

test a b c

How would I get this?


(a, b and c are just examples for some longer words, which I got from an OpenOffice Calc file)

share|improve this question
Where are you getting the abc list from? A file? Typing it directly? Standard input? – jw013 Nov 5 '12 at 21:41
i want to create a script and have this in the clipboard – rubo77 Nov 5 '12 at 21:55
And how do you plan to access this "clipboard" from the script? Pasting into standard input? Using something like xclip? – jw013 Nov 5 '12 at 21:57
I understand your question. you want me to improve the question itself... i edited it now – rubo77 Nov 5 '12 at 22:03
up vote 4 down vote accepted
export a="

for i in $a; do echo "test$i";done
share|improve this answer
thanks, that was what I needed – rubo77 Nov 5 '12 at 21:55
I just wonder, what's the difference to my script? why do you need to put the string in a variable $a first? – rubo77 Nov 5 '12 at 22:00
this solves it too: for i in $(echo "a b c"); do echo "test$i";done – rubo77 Nov 5 '12 at 22:04
@rubo77 The difference is the $a is unquoted, meaning that it undergoes word splitting, whereas "a b c" is quoted, so the shell sees it as all one word. – jw013 Nov 5 '12 at 22:05
Note that it undergoes work splitting and filename generation. Also, the "export" doesn't make sense here. What's wrong with for i in a b c; do echo "test$i"; done? – Stéphane Chazelas Nov 5 '12 at 23:31

You'd use a while loop instead.

while read i
  echo "test$i"
done <<< 'a
share|improve this answer
this works too, thanks – rubo77 Nov 5 '12 at 21:57
For the curious, this is called a "here string", which is a variant of "here documents", which use two less-than signs and a delimiter at the end and beginning of the content – Hanno Fietz Nov 10 '15 at 16:50

bash has a built in ability to do this with the curly brackets, that way you dont have to list out all your letters you want to use.

for i in {a..c}; do echo "test $i"; done
share|improve this answer
The "a", "b", "c" are just placeholders, says the OP. So this method, while valid, will not help with the question asked here. – Hanno Fietz Nov 10 '15 at 16:42

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.