> 文章列表 > 练习题:函数和数组

练习题:函数和数组

练习题:函数和数组

目录

1、编写函数,实现打印绿色OK和红色FAILED

判断是否有参数,存在为Ok,不存在为FAILED

2、编写函数,实现判断是否无位置参数,如无参数,提示错误

3、编写函数实现两个数字做为参数,返回最大值

4、编写函数,实现两个整数位参数,计算加减乘除。

5、将/etc/shadow文件的每一行作为元数赋值给数组

6、使用关联数组统计文件/etc/passwd中用户使用的不同类型shell的数量

7、使用关联数组按扩展名统计指定目录中文件的数量


1、编写函数,实现打印绿色OK和红色FAILED

判断是否有参数,存在为Ok,不存在为FAILED

#!/bin/bash
if [ $1 ]thenecho -e "\\e[1;32m OK \\e[0m"
elseecho -e "\\e[1;31m FAILED \\e[0m"
fi

2、编写函数,实现判断是否无位置参数,如无参数,提示错误

#!/bin/bash
if [ $1 ]thenecho "There is a position parameter"
elseecho "Error,There is't any parameter"
fi

 

3、编写函数实现两个数字做为参数,返回最大值

#!/bin/bash
read -p "please input the first digital:" a
read -p "please input the second digital:" b
if [ $a -ge $b ];thenecho $a
elseecho $b
fi

 

4、编写函数,实现两个整数位参数,计算加减乘除。

#!/bin/bash
read -p "please input first digital:" a
read -p "please input first digital:" b
echo "a是$a,b是$b"
val=`expr $a + $b`
echo "a + b = $val"
​
val=`expr $a - $b`
echo "a - b = $val"
​
val=`expr $a \\* $b`
echo "a \\* b = $val"
​
val=`expr $a / $b`
echo "a / b = $val"

5、将/etc/shadow文件的每一行作为元数赋值给数组

#!/bin/bash
for line in `cat /etc/shadow`do  array+=("$line")done
#for ((i=0;i<${#array[*]};i++))
#  do
#    echo ${array[$i]}
#  done
#echo ${array[2]}
echo ${array[10]} #输出第9行的内容

6、使用关联数组统计文件/etc/passwd中用户使用的不同类型shell的数量

#!/bin/bash
declare -A array
for line in `cut -d: -f7 /etc/passwd`do  let array[$line]+=1done
for i in ${!array[*]}do  echo $i:${array[$i]}done

 

7、使用关联数组按扩展名统计指定目录中文件的数量

#!/bin/bash
declare -A array
read -p "please input the directory: " dir 
if ! [ -d $dir ];thenecho "It's not a directory!"
elsefor line in `ls $dir`do  let array[${line#*.}]+=1done
fifor i in ${!array[*]}doecho $i:${array[$i]}done