BASh help

Jonathan Underwood jonathan.underwood at gmail.com
Thu Aug 30 15:21:07 UTC 2007


On 30/08/2007, Mark Haney <mhaney at ercbroadband.org> wrote:
> I've got a script that's not behaving itself. I know it's something
> silly, but I can't figure it out.  The script is just a for loop that
> runs through a text file list of files (/directory/filename format) and
> does an 'ls' on each one.  The problem is, I /want/ the script to NOT
> find those files, i.e., those files shouldn't be there.  That part
> works, but I can't dump the output of that into a text file.
>
> Basically ls dumps all the 'file or directory not found' straight to the
> console and not to the text file when I redirect output to it:
>
> ./missingfiles.sh > testfile.txt
>
> I get this output:
>
> ls: cannot access /home2/test/20070829/KVNX20070829_225943_744_3.bz2: No
> such file or directory
>
> to the console and not the text file.  How do I fix that?

One way would be to check the return value of ls using the $? built in variable.

eg in my home directory, i have a file "foo", but not one called "bar":

$ ls foo
foo
$ echo $?
0
$ ls bar
ls: cannot access bar: No such file or directory
$ echo $?
2


So, when $? is not 0, simply echo filename > somefile.




More information about the users mailing list