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)