Ls command in a for loop displaying error


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Ls command in a for loop displaying error
# 8  
Old 01-14-2019
Quote:
Originally Posted by Jag02
Code:
for i in `ls $3/$file|cut -d'/' -f5`
do
mv ......
........
..........
done

Code:
ls: /tmp/to-be_parsed/input/JAN_DAT_TES1_201807181400.csv:No such file or directory
ls: /tmp/to-be_parsed/input/JAN_DAT_TES2_201807181400.csv:No such file or directory

Files are present in the directory.I am not able to figure out why the ls command says no files.Could you pl. help me with this to correct the mistake
(1) As nezabudka says, try this:
Code:
echo $3/$file

But also:
Code:
file $3/$file

or:
Code:
test -e $3/$file && echo $3/$file exists

I would guess that either the directory ($3) is missing a component (i.e. should it be /tmp/to-be_parsed/input/JAN?) or it's mis-typed (i.e. should it be /tmp/to-be-parsed/input?)

(2) What is the point of
Code:
for in in $(ls $dir/$file)

if $dir and $file have no wild cards? You might as well be doing:
Code:
for i in $(ls /usr/bin/at)

or
Code:
for i in one

In other words you have a for loop around a single file.

(3) Don't use backticks (`...`) for process substitution - use $(...). It is easier to read, allows for embedding one process substitution in another, and, unless you are using a really old shell like the one in Solaris, is recognised by all shells.

Andrew
# 9  
Old 01-14-2019
Do you risk having spaces, tab or other naughty characters in the directory name or file name? You would be safer to use "${3}/${file}" to ensure that the values are treated as a single item. if you have a for loop on items with spaces, then they will be split up and processed separately. For instance:-
Code:
whole_message="Hello world"
for one_message in ${whole_message}
do
   echo ${one_message}
done
Hello                                          # <---- Output split to one
world.                                         # <---- line for word

whole_message="Hello world"
for one_message in "${whole_message}"          # <--- Wrapped in double quotes
do
   echo ${one_message}
done
Hello world                                    # <---- Output for one value all written as one line.


I hope that this helps,
Robin
This User Gave Thanks to rbatte1 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Displaying multiple variables in for loop

Hi! I've run into a problem where my variables are displayed in the wrong order. Basically I'm supposed to use a file that has information like this username:firstname:lastname:etc:etc. What I'm interested in doing is reformating it into a something more like this: username lastname,... (2 Replies)
Discussion started by: reindeermountai
2 Replies

2. Shell Programming and Scripting

Problem while displaying(cat) file content inside telnet loop .

Hi Team, Not getting the file output inside my email which i am sending from unix box. . Please refer the below code : #!/bin/sh { sleep 5 echo ehlo 10.56.185.13 sleep 3 echo mail from: oraairtel@CNDBMUREAPZP02.localdomain sleep 3 echo rcpt to: saurabhtripathi@anniksystems.com... (1 Reply)
Discussion started by: tripathi1990
1 Replies

3. Red Hat

Displaying command return in one line

Hello all I have a query (SQL) that returns a rather long field from an Oracle database. The field in question is defined on 400 characters but all these 400 cannot be displayed by the echo command. Thus when I launch the following command: echo "SELECT FIELD01 FROM TABLE_NAME;" | sqlplus -s... (9 Replies)
Discussion started by: S. BASU
9 Replies

4. Shell Programming and Scripting

[Solved] While loop error when add sqlplus command

Hi gurus, I hit a block when write the script. I need do while loop, in the loop I have code below. sqlplus -s abc/abc@abc <<EOF spool testwhile select * from dual; spool off exit; EOF when I run script with only this code, it works fine. if I add code as below: #!/bin/ksh ... (5 Replies)
Discussion started by: ken6503
5 Replies

5. Shell Programming and Scripting

for loop with internal unix command in statement throwing error

Hi I've gotten a plugin script that won't run. I keeps throwing an error at the following line. for BARCODE_LINE in `cat ${TSP_FILEPATH_BARCODE_TXT} | grep "^barcode"` do #something done The error reads ... (3 Replies)
Discussion started by: jdilts
3 Replies

6. Shell Programming and Scripting

while loop error. (command not found)

can any1 please tell me what is problem with following code: i=1; cat test| while read CMD; do Var$i=$CMD; or Var$i=$(echo $CMD) ; let i++ doneI keep getting error : line 4: Var1=sometext: command not found (2 Replies)
Discussion started by: kashif.live
2 Replies

7. 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

8. Shell Programming and Scripting

Displaying list of backup files using for loop

Hi, I want to display list of last 10 backup files (with numbering) from the temporary file c:/tmp/tmp_list_bkp.txt Example : 1) backup_file1 2) backup_file2 3) backup_file3 ........ ........ I tried as below but not working. for file in c:/tmp/tmp_list_bkp.txt do echo... (3 Replies)
Discussion started by: milink
3 Replies

9. Shell Programming and Scripting

displaying the path in the command line

Hi all, Does anyone know how to ammend the .cshrc file in $HOME for your session to display the path as part of the command line? So that I dont need to keep on typing pwd to see where I am? thanks Ocelot (2 Replies)
Discussion started by: ocelot
2 Replies

10. UNIX for Dummies Questions & Answers

Displaying what a command is doing/has done

I would like to see what a command is doing. For example, say I move 10 files using mv * somedir. Can I use some other command to see a verification of each files movement. Like: file1 moved to somedir file2 moved to somedir ... but, i'd to have this capability for all commands. it seems... (1 Reply)
Discussion started by: quantumechanix
1 Replies
Login or Register to Ask a Question