shell函数与数组练习

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

你可能感兴趣的:(作业,RHCE,linux,linux,服务器,windows,运维)