Você tem alguns problemas. Aqui está a versão de trabalho. Você precisa usar $ para denotar o valor de uma variável ( $filename
em vez de filename
) e você precisa atribuir o resultado de uma expressão a uma variável, em vez de apenas invocar a expressão ( read=expr $read + 1
em vez de expr $read + 1
).
#!/bin/bash
if [ $# -ne 1 ]
then
echo "Please provide one directory to search"
echo "Example usage: assignment4.sh directory_name"
exit 1
fi
if [ ! -d "$1" ]
then
echo "$1: Invalid Directory. Aborting Script."
exit 1
fi
cd "$1"
read=0
write=0
exe=0
numFiles=0
numDir=0
for filename in *
do
if [ -r "$filename" ]
then
read='expr $read + 1'
fi
if [ -x filename ]
then
exe='expr $exe + 1'
fi
if [ -w "$filename" ]
then
write='expr $write + 1'
fi
if [ -f "$filename" ]
then
numFiles='expr $numFiles + 1'
fi
done
for dir in */
do
if [ -r "$dir" ]
then
read='expr $read + 1'
fi
if [ -x "$dir" ]
then
exe='expr $exe + 1'
fi
if [ -w "$dir" ]
then
write='expr $write + 1'
fi
if [ -d "$dir" ]
then
numDir='expr $numDir + 1'
fi
done
total='expr $numDir + $numFiles'
echo "In the directory $1"
echo " Number of directories : $numDir"
echo " Number of files : $numFiles"
echo " Number of readable items : $read"
echo " Number of writable : $write"
echo " Number of executable items: $exe"
echo "-------------------------------"
echo "Total number of items: $total"
$ ./script.sh
Please provide one directory to search
Example usage: something.sh directory_name
$ ./script.sh /home/username
In the directory /home/username
Number of directories : 8
Number of files : 104
Number of readable items : 120
Number of writable : 120
Number of executable items: 8
-------------------------------
Total number of items: 112