关于shell中数组与函数的理解与练习

        编写函数,实现打印绿色OK 和红色 FAILED
        判断是否有参数,存在为Ok ,不存在为 FAILED
打印函数
function print(){
        if [ "$1" -eq 0 ]
        then
                echo -e "\e[1;31m OK \e[0m"
        else
                echo -e "\e[1;32m Flase \e[0m"  
        fi
return 0
}

#从键盘上读取输入
read -p "please input a word:" a
#判断输入是否为空
if [ $a ]
then
        #调用函数 传递参数
        print 0
else
        print 1
fi

实现判断是否无位置参数,如无参数,提示错误
#!/bin/bash

#创建一个位置参数2为空的数组
arr=([0]=1 [1]=2 [3]=3 [4]=4 [5]=5)
read -p "please input a number:" a
#判定所取参数是否为空
if [  ${arr[$a]}  ]
then
        echo ${arr[$a]}

else
        echo "false,this is empty"
fi

 

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

#!/bin/bash
function max(){
        if [ $1 -lt $2 ]
        then
                max=$2
                echo "$2 is max"
        elif [ $1 -gt $2 ]
        then
                max=$1
                echo "$1 is max"
        else
                echo " $1 equals $2 "
        fi
}
read -p "please input two numbers:" a b

max $a $b

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

#!/bin/bash

function math(){ 
val=`expr $1 + $2`
echo "$1 + $2 = $val"
val=`expr $1 - $2`
echo "$1 - $2 = $val"
val=`expr $1 \* $2`
echo "$1 * $2 = $val"
val=`expr $1 / $2`
echo "$1 / $2 = $val"

}
read -p "please input two numbers:" a b
math $a $b

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

#!/bin/bash

i=0
#使用while循环遍历/etc/shadow文件
while read line
do
        arr[$i]=$line
        let i++
done < /etc/shadow
echo ${arr[*]}

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

#!/bin/bash

declare -A array
for line in `cut -d: -f7 /etc/passwd`
do
        let array[$line]++
done
for index in ${!array[*]}
do
        echo "$index:${array[$index]}"
done

 

使用关联数组按扩展名统计指定目录中文件的数量
#!/bin/bash

declare -A array
read -p "please input a directory :" dir
for i in `ls $dir`
do
        #删除变量${i}中匹配*.的最短字符串(*匹配0个或者多个字符)
        let array[${i#*.}]++
done
for index in ${!array[*]}
do
        echo "$index:${array[$index]}"
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值