bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ls doesn't work in if statements in bash 4.3


From: billycongo
Subject: ls doesn't work in if statements in bash 4.3
Date: Wed, 26 Mar 2014 17:30:12 -0700 (PDT)
User-agent: G2/1.0

I tested on bash 4.3 and 3.0

testing]$ bash --version
bash --version
GNU bash, version 4.3.0(1)-release (x86_64-unknown-linux-gnu)

In a directory I have:

testing]$ ls -l
total 16
-rw-r--r-- 1 hpierce hpierce 77 Mar 26 20:09 dog1
-rw-r--r-- 1 hpierce hpierce 77 Mar 26 20:09 dog2
-rw-r--r-- 1 hpierce hpierce 77 Mar 26 20:09 dog3
-rw-r--r-- 1 hpierce hpierce  0 Mar 26 20:07 dog4
-rwxr-xr-x 1 hpierce hpierce 80 Mar 26 20:02 test

dog1, dog2, and dog3 have content.  dog4 is empty.

test is a simple script:

testing]$ cat test
#!/bin/bash
FILE=$1
echo $FILE
if [ ! -e $FILE ]
then
        echo "Usage: $0 <file>"
        exit 1
else
        echo $FILE exists
fi

Here's a regular run:

testing]$ for f in *; do ./test $f; done
dog1
dog1 exists
dog2
dog2 exists
dog3
dog3 exists
dog4
dog4 exists
test
test exists

Now I add a ls:

testing]$ for f in `ls dog*`; do ./test $f; done
dog1
Usage: ./test <file>
dog2
Usage: ./test <file>
dog3
Usage: ./test <file>
dog4
Usage: ./test <file>

So I moved it to an earlier version of bash

testing]$ bash --version
bash --version
GNU bash, version 3.00.15(1)-release (x86_64-redhat-linux-gnu)

testing]$ for f in `ls dog*`; do ./test $f; done
dog1
dog1 exists
dog2
dog2 exists
dog3
dog3 exists
dog4
dog4 exists





reply via email to

[Prev in Thread] Current Thread [Next in Thread]