第三次shell练习
例题1、
编写函数,实现打印绿色OK和红色FAILED
判断是否有参数,存在为Ok,不存在为FAILED
print ()
{
if [ ! "$1" = "" ];
then
echo -e "有参数 : \033[32m [OK] \033[0m"
else
echo -e "无参数 : \033[31m [FALLED] \033[0m"
fi
}
print $1
例题2、
编写函数,实现判断是否无位置参数,如无参数,提示错误
yum ()
{
if [ $# -eq 0 ];
then
echo "无位置参数 "
else
echo "位置参数为:$*"
fi
}
yum $1
例题3、
编写函数实现两个数字做为参数,返回最大值
max ()
{
if [ "$a" -gt "$b" ]
then
echo "参数1>参数2 值为:$a"
elif [ "$a" -lt "$b" ]
then
echo "参数2>参数1 值为:$b"
else
echo "相等 值为:$a"
fi
}
read -p " please input two number " a b
max a b
~
例题4、
编写函数,实现两个整数位参数,计算加减乘除。
compute ()
{
echo "$a+$b=` expr $a + $b `"
echo "$a-$b=` expr $a - $b `"
echo "$a*$b=` expr $a \* $b `"
echo "$a/$b=` expr $a / $b `"
}
read -p " please input two number " a b
compute $1 $2
例题5、
将/etc/shadow文件的每一行作为元数赋值给数组
func ()
{
i=0
while read line ;
do
arry[$i]=$line
let i++
done < /etc/shadow
}
func
for i in ${arry[@]};
do
echo "$i"
done
例题6、
使用关联数组统计文件/etc/passwd中用户使用的不同类型shell的数量
declare -A count
func ()
{
while read line
do
type= `echo $line | cut -d: -f7`
let count[$type]++
done < /etc/passwd
}
func
for i in ${!count[*]}
do
echo "$i 的数量有:${count[$i]}"
done
例题7、
使用关联数组按扩展名统计指定目录中文件的数量
declare -A arry
read -p " 请输入绝对路径" a
cd $a
ls $1 | cut -d . -f2 >> /tmp/cishi.txt
while read line
do
type=${line##*.}
let arry[$type]++
done</tmp/cishi.txt
for i in ${!arry[*]}
do
echo "扩展名为$i的有${arry[$i]}"
done
rm -rf /tmp/cishi.txt