Reputation:
I'm trying to read a list of files from stdin, with each file delimited by a newline, however I'm noticing that only the first element is getting appended to the list. I noticed this by simply entering two strings and then q. Can anyone explain why?
files=()
read input
while [ "$input" != "q" ] ;
do
files+=( "$input" )
read input
done
for f in $files ;
do
echo "the list of files is:"
echo "$f"
echo "The length of files is ${#files} " #prints 1, even if 2+ are entered
done
Upvotes: 8
Views: 4704
Reputation: 785406
Actually your files+=( "$input" )
expression is adding elements to your array but you are not iterating it correctly.
Your last loop should be:
for f in "${files[@]}"; do
echo "element is: $f"
done
$ a+=(1)
$ a+=("hello")
$ a+=(3)
$ for i in "${a[@]}"; do echo "$i"; done
1
hello
3
Upvotes: 10