bash for loop through no file -



bash for loop through no file -

when loop through files starting foo do

for f in foo* ; echo "result = $f" ; done

the problem when no file start foo get:

result = foo*

meaning loop executed once, if no file start foo.

how possible? how can loop through files (and not loop @ if there no file)?

you can stop behaviour setting nullglob:

shopt -s nullglob

from linked page:

nullglob bash shell alternative modifies [[glob]] expansion such patterns match no files expand 0 arguments, rather themselves.

you can remove setting -u (unset, whereas s set):

shopt -u nullglob test $ touch foo1 foo2 foo3 $ file in foo*; echo "$file"; done foo1 foo2 foo3 $ rm foo*

let's see:

$ file in foo*; echo "$file"; done foo*

setting nullglob:

$ shopt -s nullglob $ file in foo*; echo "$file"; done $

and disable behaviour:

$ shopt -u nullglob $ file in foo*; echo "$file"; done foo*

bash for-loop wildcard

Comments

Popular posts from this blog

Delphi change the assembly code of a running process -

json - Hibernate and Jackson (java.lang.IllegalStateException: Cannot call sendError() after the response has been committed) -

C++ 11 "class" keyword -