shell综合题

题目:

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

[root@localhost shell]# vim echo_color.sh 

#!/bin/bash

echo_color() {
if [ $# -eq 0 ];then
        echo -e "\e[31mFAILED\e[0m"
else
        echo -e "\e[32mOK\e[0m"
fi
}

echo_color $@

在这里插入图片描述

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

[root@localhost shell]# vim position.sh 

#!/bin/bash
err(){
if [ -z "$1" ];then
        echo "error"
        return 1
else
        return 0
fi
}
err $1
~                                                                                 
~    

在这里插入图片描述

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

[root@localhost shell]# vim max.sh 

#!/bin/bash
max(){
        if [ $1 -ge $2 ]
        then
                echo "最大值是$1"
        else
                echo "最大值是$2"
        fi
}
max $1 $2
~        

在这里插入图片描述

4、将密码文件的每一行作为元数赋值给数组

[root@localhost shell]# vim homework2_1.sh 

#!/bin/bash
array=(`cat /etc/shadow`)
echo ${array[*]}

5、使用关联数组统计密码文件中用户使用的不同类型shell的数量

[root@localhost shell]# vim homework2_2.sh 

#!/bin/bash
declare -A num 

for i in `cut -d : -f 7 /etc/passwd`
do
        let num[$i]+=1
done

for j in ${!num[@]}
do
        echo $j:${num[$j]}
done

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

[root@localhost shell]# vim homework2_3.sh 

#!/bin/bash
declare -A num 
for i in `ls /root/shell | cut -d . -f 2`
do
        let num[$i]+=1
done

for j in ${!num[@]}
do
        echo $j:${num[$j]}
done
~                                                               
~

请添加图片描述

7.你需要打印一个给定的数字的反序,如输入10572,输出27501,如果没有输入数据,应该抛出错误和使用脚本说明。

[root@localhost shell]# vim sequence.sh 

#!/bin/bash
read -p "请输入一串数字:" num
count=$num
tmp=0
result=0

if [ -z $num ]
then
        echo "没有输入数据,您应该在运行本脚本后根据提示信息输>入一串数字!"
        echo "本脚本需要实现,如输入10572,输出27501"
elif `echo $num | grep "[0-9]" &> /dev/null`
then
        while [ $num -gt 0 ]
        do
                tmp=`expr $num % 10`
                result=`expr $result \* 10 + $tmp`
                num=`expr $num / 10`
        done
        echo "$count的反序列是$result"                  
else
        echo "输入的不是数字!"
fi

在这里插入图片描述
脚本说明:
1.输入的数字为num
2.赋值 tmp=0, result=0 (反向和单个数字设置为0)
3.num % 10, 将得到最左边的数字
4.反向数字可以用这个方法生成result * 10 + tmp
5.对输入数字进行右位移操作(除以10)
6.如果num > 0, 进入第三步,否则进行第七步
7.输出result

8.写出SHELL函数RevertInput,函数必须获取三个参数,然后将三个参数倒序echo打印出来,函数必须检查参数个数的合法性,如果参数非法,打印”Illegal parameters”

对于下面的输入:
RevertInput “this is para1” para2 para3
应该输出:
para3
para2
this is para1
(注:需要注意第一个参数中的空格)

[root@localhost shell]# vim args.sh 

#!/bin/bash

RevertInput ()
{
        read -p "Please input three args:" num1 num2 num3

        if [ -z $num1 ] || [ -z $num2 ] || [ -z $num3 ]
        then
                echo "Illegal parameters"
        else
                echo "$num3"
                echo "$num2"
                echo "$num1"
        fi
}

RevertInput
~           

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值