1、编写函数,实现打印绿色OK和红色FAILED
判断是否有参数,存在为Ok,不存在为FAILED
#!/bin/bash
func()
{
echo $#
if [ -n "$1" ];then #-n 后的参数需要" "
echo -e "\033[32m OK \033[0m"
else
echo -e "\033[31m failed \033[0m"
fi
}
func $1
2、编写函数,实现判断是否无位置参数,如无参数,提示错误
#!/bin/bash
func()
{
echo $#
if [ -n "$1" ];then #-n 后的参数需要" "
echo "can shu wei $1"
else
echo -e "error"
fi
}
func $1
3、编写函数实现两个数字做为参数,返回最大值
#!/bin/bash
compare()
{
if [ $1 -gt $2 ] ; then
return $1
elif [ $1 -lt $2 ] ; then
return $2
else
echo "same"
fi
}
compare $1 $2
echo "$?"
4、编写函数,实现两个整数位参数,计算加减乘除。
#!/bin/bash
calculator()
{
if expr $1 + $2 >/dev/null ; then
echo "$1+$2= $(($1+$2))"
echo "$1-$2= $(($1-$2))"
echo "$1*$2= $(($1*$2))"
echo "$1/$2= $(($1/$2))"
else
echo "not zhengshu"
fi
}
calculator $1 $2
5、将/etc/shadow文件的每一行作为元数赋值给数组
#!/bin/bash
user=($(cat /etc/shadow))
for ((i=0;i<${#user[*]};i++));
do
echo ${user[$i]}
done
6、使用关联数组统计文件/etc/passwd中用户使用的不同类型shell的数量
#!/bin/bash
declare -A a
num=`wc -l </etc/passwd`
for ((i=1;i<=$num;i++));
do
b[$((i-1))]=$(head -$i /etc/passwd | tail -1 )
done
for ((i=0;i<${#b[*]};i++));
do
type=`echo ${b[$i]} | awk -F: '{print $NF}'`
let a[$type]++
done
for i in ${!a[*]}
do
echo "$i : ${a[$i]}"
done
#2
for i in `cut -d: -f7 /etc/passwd
do
let a[$i]++
done
for i in ${!a[*]}
do
echo "$i : ${a[$i]}"
done
7、使用关联数组按扩展名统计指定目录中文件的数量
#!/bin/bash
declare -A a
b=(`ls -l /shell/test | awk '{print $NF}'`)
for ((i=0;i<${#b[*]};i++));
do
type=`echo ${b[$i]}|grep [a-z] | awk -F. '{print $NF}'`
let a[$type]++
done
for i in ${!a[*]}
do
echo "$i : ${a[$i]}"
done