: [: too many arguments in for -f in if


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting : [: too many arguments in for -f in if
# 15  
Old 07-18-2011
Thanks mirni,
but my code is working fine i have tested with multiple files being in dir ...Smilie as soon as i change “#!/bin/sh” to “#!/bin/bash” is starts giving "too many arguments" error any explanation to this ? Smilie

PS : I am working on Sun OS.And the scheduler tool executes the script as "scriptname" at the command prompt...Let me know in case you need any more info.

Thanks,
Ajay
Quote:
Originally Posted by mirni
The problem was too many arguments, just like it said.
Your wildcard pattern K*-*-*-*.s matched more than one file, or there was a space in the filename. However, the [ -f file ] test expects exactly one file.
To test for existence of multiple files, the most common way is to make a loop:
Code:
for i in /path/name/K-*.s ; do
  if [ -f "$i" ] ; then
    echo "file $i exists"
  else
    echo "$i does not exist, or is not a regular file"
  fi
done

Please not the quotes in the test, "$i", which will make it only one argument even for filenames with spaces.
# 16  
Old 07-18-2011
It's normal that line has some limit. If line length is problem - like in this case, then use while with pipe and if input is huge, then use tmpfile.
Code:
ls -1 /path/name/K-*.s | while read i
do   
    if [ -f "$i" ] ; then     
        echo "file $i exists"   
    else     
    echo "$i does not exist, or is not a regular file"   
    fi 
done

# 17  
Old 07-18-2011
On my Linux box, it doesnt work on either sh nor bash:

Code:
$ ls file*
file1  file2  file3  filelist
$ cat testf.sh
#!/bin/sh
if [ -f file* ] ; then
    echo exist multiple 
fi
 $ ./testf.sh
[: 4: file1: unexpected operator
 $ cat testf.bash
#!/bin/bash
if [ -f file* ] ; then
    echo exist multiple 
fi
 $ ./testf.bash 
./testf.bash: line 2: [: too many arguments

actually, my sh is 'dash' Smilie :
Code:
$ ls -l `which sh`
lrwxrwxrwx 1 root root 4 2011-06-09 11:33 /bin/sh -> dash

This User Gave Thanks to mirni For This Post:
# 18  
Old 07-19-2011
can you please try executing just as "scriptname" at the command prompt without "./"
e.g $testf.sh
BTW, my sh is "sh" only
> which sh
/usr/bin/sh
> uname -v
Generic_118558-27
> uname
SunOS
> uname -a
SunOS ssdb0046t 5.9 Generic_118558-27 sun4u sparc SUNW,Sun-Fire-V890
Thanks,
Ajay
# 19  
Old 07-19-2011
Quote:
can you please try executing just as "scriptname" at the command prompt without "./"
e.g $testf.sh
That returns "Command not found", just as expected, since the current dir is not in PATH.

---------- Post updated 07-19-11 at 01:36 AM ---------- Previous update was 07-18-11 at 10:32 PM ----------

I'm sure that the test won't work in either sh nor bash, if you have more (or less) than one argument to test -f. The difference may be in how the error is reported, but nevertheless, supplying test -f with more or less arguments is a syntax error on your side.
# 20  
Old 07-20-2011
test command accept only 1 argument when using option -f.
Look my while loop and try it.
- read filename
- test it

If you give next echo, you will see your test problem
Code:
echo if [ -f file* ]

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Ubuntu

[: too many arguments

line 5: #!/bin/bash old=$(du -sh /home/andy/Downloads/myfile.iso) while true; do new=$(du -sh /home/andy/Downloads/myfile.iso) if ; then break fi old=$new xdotool getactivewindow key Ctrl sleep 5 done line 5: bash - Meaning of " (square brackets)... (9 Replies)
Discussion started by: drew77
9 Replies

2. Shell Programming and Scripting

Too many arguments

hi I have this code a="a b c" set -- $a if ; then echo empty fi why is it line 3 reports "test: [: too many arguments"? :wall: Thanks! (4 Replies)
Discussion started by: h0ujun
4 Replies

3. Shell Programming and Scripting

Using arguments

I have a SNMP agent that sends three arguments to the script to get a value at the end. The first is the LeafNumber, second is the request type (SET, GET, GETNEXT), and the last is a string that represents some value to be set(used only for set requests). The agent string looks like this: ... (3 Replies)
Discussion started by: jsoper1
3 Replies

4. Shell Programming and Scripting

grep with two arguments to arguments to surch for

Hello, is it possible to give grep two documents to surche for? like grep "test" /home/one.txt AND /home/two.txt ? thanks (1 Reply)
Discussion started by: Cybertron
1 Replies

5. Shell Programming and Scripting

Too many arguments

echo "the number from 1 to 10:" i=1 while do echo $i i=`expr $i+1' done above is the program i written in Linux O.S using vi editor but i am getting the error that while: line 3: i am not understanding that why i am getting this error. can any body please help me regarding this... (3 Replies)
Discussion started by: bsatishbabu
3 Replies

6. Shell Programming and Scripting

[: too many arguments

hi I am getting too many arguments error for the below line if ; then Thx in advance (1 Reply)
Discussion started by: vls1210
1 Replies

7. Shell Programming and Scripting

too many arguments?

i don't know what's wrong with the code, says too many arguments in the first two if statements. how to change it? thx. the file is like in this format: ;dfs;dfdsf;fsd ff dsf;dfdffdfd; -f2 should be only one word with no space, but could be like this 'n/a', '**ABC' while read line; do ... (1 Reply)
Discussion started by: dtdt
1 Replies

8. Shell Programming and Scripting

Too many arguments?

I can't find anything wrong with this line of code, it works when there is one file in the directory but more than one i get a "too many arguements2 error if ; then am i missing something? (3 Replies)
Discussion started by: Alendrin
3 Replies

9. Shell Programming and Scripting

[: too many arguments

Hi Guys I have this small Bash script - but it fails when I'm trying to run it. ./test.sh: && ; then # date >> /writable/sys/shutdown.log shutdown -h "now" exit fi done (4 Replies)
Discussion started by: tainted2real
4 Replies

10. UNIX for Dummies Questions & Answers

Arguments

Ok so i had to create a file and put some random text into it which i did. THen u make a script which takes 2 arguments. The first being a line of text, the second being your newly created file. The script should take the first argument and insert it into the very top (the first line) of... (1 Reply)
Discussion started by: iago
1 Replies
Login or Register to Ask a Question