shell函数和数组练习题

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

fun(){
    if [ -z $1 ]
    then
        echo -e "\033[31m failed \033[0m"
    else
        echo -e "\033[32m ok \033[0m"
    fi
}
read -p "请输入参数: " i

fun  $i

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

fun(){
    if [ $# -eq 0 ]
    then
        echo "无位置参数"
    else
        echo "位置参数为$@"
    fi
}

read -p "请输入参数: " i
fun $i

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

read -p "please input two number:" a b
fun(){
[ -z "$a" -o -z "$b" ] && {
echo "please input 'two' number"
exit 1
}
expr $a + 10 &>/dev/null
return_a=$?
expr $b + 10 &>/dev/null
return_b=$?
[ "$return_a" -eq 0 -a "$return_b" -eq 0 ] || {
echo "please input two 'number'"
exit 2
}
[ "$a" -lt "$b" ] && {
echo "$a < $b"
exit 0
}
[ "$a" -eq "$b" ] && {
echo "$a = $b"
exit 0
}
[ "$a" -gt "$b" ] && {
echo "$a > $b"
exit 0
}
}
fun $a $b

文章来源地址【匠子博客园 www.jiangzi.cc】
4、编写函数,实现两个整数位参数,计算加减乘除。

fun()
{
    echo "$1+$2=$(($1+$2))" 
    echo "$1-$2=$(($1-$2))"
    echo "$1*$2=$(($1*$2))"
    echo "$1/$2=$(($1/$2))"
}
read -p "please input two int number:" num1 num2
fun $num1 $num2

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

j=0
for i in `cat /etc/shadow`
do
    array[$j]=$i
    let j++
done
read -p "input you want line:" line
echo ${array[$line]}

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

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

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

declare -A array
for i in `ls | cut -d . -f 2-`
do
	let array[$i]=array[$i]+1
done
for sub in ${!array[*]}
do
	echo "$sub:${array[$sub]}"
done 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值