The short bash script below list all files and dirs in given directory and its sub. What does the $1/* mean in the script? Please give me some references about it. Thanks
#!/bin/sh
list_alldir(){
for file in $1/*
do
if [ -d $file ]; then
echo $file
list_alldir $file
else
echo $file
fi
done
}
if [ $# -gt 0 ]; then
list_alldir "$1"
else
list_alldir "."
fi
It’s the glob of the first argument considered as a directory
In bash scripts the arguments to a file are passed into the script as
$0( which is the script name ), then$1,$2,$3… To access all of them you either use their label or you use one of the group constructs. For group constructs there are$*and$@. ($*considers all of the arguments as one block where as$@considers them delimited by$IFS)