shell练习

目录

1、编写函数,实现打印绿色OK和红色FAILED,判断是否有参数,存在为Ok,不存在为FAILED

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

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

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

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

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

 

1、编写函数,实现打印绿色OK和红色FAILED,判断是否有参数,存在为Ok,不存在为FAILED

fun (){
if [ $# -ne 0 ]
then
        echo -e "\033[32m OK \033[0m"
else
        echo -e "\033[31m FAILED \033[0m"
fi
}

read -p "please input:" i
fun $i

shell练习_第1张图片

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

fun (){
if [ $# -eq 0 ]
then
        echo 'No positional parameters'
else
        echo "positipnal parameters is $@"
fi
}

read -p 'input:' par
fun $par

shell练习_第2张图片
3、编写函数实现两个数字做为参数,返回最大值

fun (){
if [ "$a" -gt "$b" ]
then
        echo "$a"
else
        echo "$b"
fi

}

read -p 'please enter two unequal numbers:' a b
fun

 shell练习_第3张图片

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

#!/bin/bash
i=0
while read a
do
         array[$i]=$a
         echo   $i array --- ${array[$i]}
         let i++
done < /etc/shadow

shell练习_第4张图片
5、使用关联数组统计文件/etc/passwd中用户使用的不同类型shell的数量

#!/bin/bash
declare -A count
while read a
do
        type=`echo $a | awk -F : '{print $7}'`
        let count[$type]++
done < /etc/passwd
for i in ${!count[@]}
do
        echo "$i num is  ----- ${count[$i]}"
done

shell练习_第5张图片
6、使用关联数组按扩展名统计指定目录中文件的数量

#!/bin/bash
while :
do
        read -p 'input dir:' dir
        if [ ! -d "$dir" ]
        then
                echo 'not exist'
        else
                break
        fi
done
declare -A count
cd $dir
for i in `ls`
do      if [ -a $i ]
        then
            type=${i##*.}
            let count[$type]++
        fi
done
for j in ${!count[*]}
do
        echo $j num is ----- ${count[$j]}
done

shell练习_第6张图片

 

 

你可能感兴趣的:(运维)