Trouble understand and using for loop


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Trouble understand and using for loop
# 1  
Old 04-16-2013
Trouble understand and using for loop

Good evening all I have what might be a simple problem to solve but I do not know how to solve it myself. I am writing a bash script and my code looks something like this:

Code:
mp3=`ls | grep \.mp3`

for f in $mp3
do
  echo $f
done

Basically what I want to do is look through the current directory for all files that end in a '.mp3' extension, which also have spaces in them, eg. "Tom Petty - Running Down a Dream.mp3", then run a loop that prints such files one line after another. However I have been running into a problem where $f only prints one word at a time going from space to space, I don't want an output that looks like:

Tom
Petty
-
Running
Down
a
Dream.mp3

I want an output that looks like:

Tom Petty - Running Down a Dream.mp3
Next song
next song
...

Any help would be appreciated. Thank you.
# 2  
Old 04-16-2013
Try:
Code:
for f in *.mp3
do
  echo "$f"
done

# 3  
Old 04-16-2013
Quote:
Originally Posted by Don Cragun
Try:
Code:
for f in *.mp3
do
  echo "$f"
done

So from my limited understanding, after I pass in a list I can then do a loop with anything that ends in a .mp3 extension, I don't necessarily have to pass in the variable by saying $mp3 when I make a loop?
# 4  
Old 04-16-2013
Quote:
Originally Posted by mistsong1
So from my limited understanding, after I pass in a list I can then do a loop with anything that ends in a .mp3 extension, I don't necessarily have to pass in the variable by saying $mp3 when I make a loop?
By setting mp3 to a list of filenames containing .mp3 and then expanding $mp3 in the for loop, you went through the loop seven times for the file named:
Code:
Tom Petty - Running Down a Dream.mp3

with file set to "Tom", "Petty", "-", "Running", "Down", "a", and "Dream.mp3" instead of going through the loop once with file set to "Tom Petty - Running Down a Dream.mp3" which I did by letting the shell expand the list of filenames ending in .mp3 in the for loop.
# 5  
Old 04-16-2013
Quote:
Originally Posted by Don Cragun
By setting mp3 to a list of filenames containing .mp3 and then expanding $mp3 in the for loop, you went through the loop seven times for the file named:
Code:
Tom Petty - Running Down a Dream.mp3

with file set to "Tom", "Petty", "-", "Running", "Down", "a", and "Dream.mp3" instead of going through the loop once with file set to "Tom Petty - Running Down a Dream.mp3" which I did by letting the shell expand the list of filenames ending in .mp3 in the for loop.
Thanks again for the help, that enabled me to fiddle around with the code until I managed to do what needed to get done
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Considerable trouble with for loop in combination with awk

I have the text file where each line has the format: chr10 101418889 101418904 0.816327 Right now the interval between column 2 and 3 is 15. I only want the two consecutive positions starting at position 1, write it to a file, then move up one position write to file etc. So that: ... (1 Reply)
Discussion started by: jfern
1 Replies

2. UNIX for Dummies Questions & Answers

Trouble displaying parameters passed into a for loop

#!/bin/bash function check_num_args() { if ; then echo "Please provide a file name" else treat_as_file $* fi } function treat_as_file() { numFiles=$# for((i=1;i<=$numFiles;i++));do echo $i ... (3 Replies)
Discussion started by: kikilahooch
3 Replies

3. Programming

trouble with loop counting

HI there, I am trying to count manually what this code does but I am stuck and I don't learly see the result. The code works and it compiles and runs but I just don't follow the value of var. #include<stdio.h> #include<stdlib.h> #include<sys/types.h> #include<unistd.h> #include<wait.h>... (2 Replies)
Discussion started by: bluetxxth
2 Replies

4. Shell Programming and Scripting

can't understand!

Hi All, can you please help me to figured out what's the meaning of this. ${SERVER_DATABASE} -b << EOF 2>>/dev/null THanks, (3 Replies)
Discussion started by: nikki1200
3 Replies

5. Shell Programming and Scripting

Do not understand why my while loop fail (bash)

Hi again :) I still need your help now... #!/bin/bash SIZE=`ls -s text.txt` while do done My problem is that the line "while ..." still print the same value after the first loop. In one instruction change the size of text.txt I've run my bash script in debug mode, and the... (6 Replies)
Discussion started by: Link_
6 Replies

6. Shell Programming and Scripting

Trouble with a file path as awk output in for loop

When I run the following command in the shell it works fine. It prints a city name and then a path for a file. ~$ for i in `awk -F':' '{print $0}' /home/knoppix/Desktop/data/subs | grep -m 1 $ city | sed "s/:/ /"` >do >echo $i >done Now, when I place it in this shell script (sh) it prints... (6 Replies)
Discussion started by: afroCluster
6 Replies

7. Shell Programming and Scripting

for loop syntax trouble

i don't get what's wrong here. i'm writing a shell script that takes 1 argument (a number) from the command-line, but it's throwing an error: Syntax error: Bad for loop variable doesn't make much sense for (( i = 1; i = ${1}; i++ )) # error points to this line everytime do echo... (9 Replies)
Discussion started by: visitorQ
9 Replies

8. Shell Programming and Scripting

Loop Trouble

Can anyone tell me what's wrong with my code here? I'm experiencing weird behavior... I am using 'j' to go down a list filenames saved in a .txt file and prompting the user whether or not she would like to delete each one. This works all well and fine the first run through, but then instead of... (2 Replies)
Discussion started by: RSymphony
2 Replies

9. Shell Programming and Scripting

Start more than one database - trouble with for loop

I have seen this done before - and maybe there is a better way too. I want to be abe to use a for loop (or other better method) to loop through the database instance names that are part of the script - not an external file where a read might be ok. Here is what I have and I know won't work -... (5 Replies)
Discussion started by: dave-mentor
5 Replies

10. UNIX for Dummies Questions & Answers

can't understand

how i can download this game n start it :S (5 Replies)
Discussion started by: BoyArcher
5 Replies
Login or Register to Ask a Question