shell 函数和数组练习

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值