1、编写函数,实现打印绿色OK和红色FAILED 判断是否有参数,存在为Ok,不存在为FAILED
扩展:shell脚本执行完返回字体的颜色:
增加文字颜色格式:echo -e "\033[颜色编号m 内容 \033[0m"
常见颜色:31 红色 32 绿色 33 黄色 34 蓝色 35 紫色 37 白色
实现代码:vim fun4.sh
增加执行权限 chmod +x fun4.sh
COLOR(){ #颜色函数
if [ $# -eq 0 ] #如果没有参数
then
echo -e $"\033[31mFAILED \033[0m" # 红色的FAILED
else
echo -e "\033[32mOk \033[0m" # 绿色OK
fi
}
COLOR #调用函数
测试1(调用函数时没有任何参数):./fun4.sh
FAILED
COLOR(){ #颜色函数
if [ $# -eq 0 ] #如果没有参数
then
echo -e $"\033[31mFAILED \033[0m" # 红色的FAILED
else
echo -e "\033[32mOk \033[0m" # 绿色OK
fi
}
COLOR \1 #调用函数
测试2(调用函数时有参数):./fun4.sh
OK
2、编写函数,实现判断是否无位置参数,如无参数,提示错误
JUDGE(){
if [ $# -eq 0 ]
then
echo "错误"
else
echo "有位置变量"
fi
}
JUDGE
测试1(调用函数不传参数):./fun5.sh
错误
JUDGE(){
if [ $# -eq 0 ]
then
echo "错误"
else
echo "有位置变量"
fi
}
JUDGE 1
测试2(调用函数传入参数):./fun5.sh
有位置变量
3、编写函数实现两个数字做为参数,返回最大值
实现代码:
RETURN_MAX() {
if [ $d -gt $b ]
then
return 0
else
return 1
fi
}
read -p "请输入一个数:" d
read -p "请再输入一个数:" b
RETURN_MAX
if [ $? -eq 0 ]
then
echo "较大的数为:$d"
else
echo "较大的数为:$b"
fi
测试:./fun6.sh
请输入一个数:33
请再输入一个数:66
较大的数为:66
4、编写函数,实现两个整数位参数,计算加减乘除。
实现代码:
PERATION() {
if [ "$select" = "+" ]
then
echo "$n + $m = $(($n+$m))"
elif [ "$select" = "-" ]
then
echo "$n - $m = $(($n-$m))"
elif [ "$select" = "*" ]
then
echo "$n * $m = $(($n*$m))"
elif [ "$select" = "/" ]
then
echo "$n / $m = $(($n/$m))"
else
echo "erro"
fi
}
read -p "请输入你要进行的运算(+ - * /):" select
read -p "请输入第一个数:" n
read -p "请输入第二个数:" m
PERATION
测试:
[root@server scripts]# ./fun7.sh
请输入你要进行的运算(+ - * /):+
请输入第一个数:1
请输入第二个数:1
1 + 1 = 2
[root@server scripts]# ./fun7.sh
请输入你要进行的运算(+ - * /):-
请输入第一个数:78
请输入第二个数:54
78 - 54 = 24
[root@server scripts]# ./fun7.sh
请输入你要进行的运算(+ - * /):*
请输入第一个数:7
请输入第二个数:6
7 * 6 = 42
请输入你要进行的运算(+ - * /):/
请输入第一个数:9
请输入第二个数:3
9 / 3 = 3
5、使用关联数组按扩展名统计指定目录中文件的数量
代码实现:
declare -A Array
ls $1 | sed 's/ /\n/g' >> $1/FileName.txt
while read FileName
do
ArrayIndex=${FileName##*.}
let Array[$ArrayIndex]++
done < $1/FileName.txt
for i in ${!Array[@]}
do
echo "$i:${Array[$i]}"
done
rm -f $1/FileName.txt
测试:./ass_array1.sh
passwd:1
sh:37
passwd2:1
txt:3