0

I have a script to read a set list of site locations and search to see if the associated file year exists. However when I run the script I get the following error:

 f: cannot open (No such file or directory)
./fillmissingfileyears.sh Sites.txt not found.   

But the input file list does exist. Suggestions?

Code is below

#!/bin/bash

for f in Sites.txt;
  do file f;

    [ ! -f "$f"-SO2-1990.dat.out ] && { echo "$0 "$f"-SO2-1990.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-1991.dat.out ] && { echo "$0 "$f"-SO2-1991.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-1992.dat.out ] && { echo "$0 "$f"-SO2-1992.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-1993.dat.out ] && { echo "$0 "$f"-SO2-1993.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-1994.dat.out ] && { echo "$0 "$f"-SO2-1994.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-1995.dat.out ] && { echo "$0 "$f"-SO2-1995.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-1996.dat.out ] && { echo "$0 "$f"-SO2-1996.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-1997.dat.out ] && { echo "$0 "$f"-SO2-1997.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-1998.dat.out ] && { echo "$0 "$f"-SO2-1998.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-1999.dat.out ] && { echo "$0 "$f"-SO2-1999.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2000.dat.out ] && { echo "$0 "$f"-SO2-2000.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2001.dat.out ] && { echo "$0 "$f"-SO2-2001.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2002.dat.out ] && { echo "$0 "$f"-SO2-2002.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2003.dat.out ] && { echo "$0 "$f"-SO2-2003.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2004.dat.out ] && { echo "$0 "$f"-SO2-2004.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2005.dat.out ] && { echo "$0 "$f"-SO2-2005.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2006.dat.out ] && { echo "$0 "$f"-SO2-2006.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2007.dat.out ] && { echo "$0 "$f"-SO2-2007.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2008.dat.out ] && { echo "$0 "$f"-SO2-2008.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2009.dat.out ] && { echo "$0 "$f"-SO2-2009.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2010.dat.out ] && { echo "$0 "$f"-SO2-2010.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2011.dat.out ] && { echo "$0 "$f"-SO2-2011.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2012.dat.out ] && { echo "$0 "$f"-SO2-2012.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2013.dat.out ] && { echo "$0 "$f"-SO2-2013.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2014.dat.out ] && { echo "$0 "$f"-SO2-2014.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2015.dat.out ] && { echo "$0 "$f"-SO2-2015.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2016.dat.out ] && { echo "$0 "$f"-SO2-2016.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2017.dat.out ] && { echo "$0 "$f"-SO2-2017.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2018.dat.out ] && { echo "$0 "$f"-SO2-2018.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2019.dat.out ] && { echo "$0 "$f"-SO2-2019.dat.out not found."; exit 1;}
    [ ! -f "$f"-SO2-2020.dat.out ] && { echo "$0 "$f"-SO2-2020.dat.out not found."; exit 1;}
end do
Barmar
  • 669,327
  • 51
  • 454
  • 560
stormctr2
  • 11
  • 2
  • Unrelated: I suggest making a loop from 1990 to 2020 instead of repeating the same logic a lot of times. You could also use `seq 1990 2020` to generate them – Ted Lyngmo Feb 02 '22 at 19:36
  • 1
    What is `end do`? You end a loop with `done`. – Barmar Feb 02 '22 at 19:37
  • 1
    What are you expecting `file f` to do? – Barmar Feb 02 '22 at 19:39
  • 1
    You're not reading the contents of `Sites.txt`. You're just setting `$f` to the filename `Sites.txt`. – Barmar Feb 02 '22 at 19:39
  • This can't be the script you're running, it would get a syntax error because of the missing `done`. – Barmar Feb 02 '22 at 19:42
  • The second error message you got would come from `"$0 $f"` if they weren't arguments to `echo`. – Barmar Feb 02 '22 at 19:43
  • See https://stackoverflow.com/questions/1521462/looping-through-the-content-of-a-file-in-bash/1521498#1521498 for the correct way to loop through a file. – Barmar Feb 02 '22 at 19:46

0 Answers0