> 文章列表 > shell综合题

shell综合题

shell综合题

文章目录

    • 题目:
    • 1. 编写函数,实现打印绿色OK和红色FAILED 判断是否有参数,存在为Ok,不存在为FAILED
    • 2. 编写函数,实现判断是否无位置参数,如无参数,提示错误
    • 3. 编写函数实现两个数字做为参数,返回最大值
    • 4、将密码文件的每一行作为元数赋值给数组
    • 5、使用关联数组统计密码文件中用户使用的不同类型shell的数量
    • 6、使用关联数组按扩展名统计指定目录中文件的数量
    • 7.你需要打印一个给定的数字的反序,如输入10572,输出27501,如果没有输入数据,应该抛出错误和使用脚本说明。
    • 8.写出SHELL函数RevertInput,函数必须获取三个参数,然后将三个参数倒序echo打印出来,函数必须检查参数个数的合法性,如果参数非法,打印”Illegal parameters”

题目:

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

[root@localhost shell]# vim echo_color.sh #!/bin/bashecho_color() {
if [ $# -eq 0 ];thenecho -e "\\e[31mFAILED\\e[0m"
elseecho -e "\\e[32mOK\\e[0m"
fi
}echo_color $@

shell综合题

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

[root@localhost shell]# vim position.sh #!/bin/bash
err(){
if [ -z "$1" ];thenecho "error"return 1
elsereturn 0
fi
}
err $1
~                                                                                 
~    

shell综合题

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

[root@localhost shell]# vim max.sh #!/bin/bash
max(){if [ $1 -ge $2 ]thenecho "最大值是$1"elseecho "最大值是$2"fi
}
max $1 $2
~        

shell综合题

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`
dolet num[$i]+=1
donefor j in ${!num[@]}
doecho $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`
dolet num[$i]+=1
donefor j in ${!num[@]}
doecho $j:${num[$j]}
done
~                                                               
~

shell综合题

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

[root@localhost shell]# vim sequence.sh #!/bin/bash
read -p "请输入一串数字:" num
count=$num
tmp=0
result=0if [ -z $num ]
thenecho "没有输入数据,您应该在运行本脚本后根据提示信息输>入一串数字!"echo "本脚本需要实现,如输入10572,输出27501"
elif `echo $num | grep "[0-9]" &> /dev/null`
thenwhile [ $num -gt 0 ]dotmp=`expr $num % 10`result=`expr $result \\* 10 + $tmp`num=`expr $num / 10`doneecho "$count的反序列是$result"                  
elseecho "输入的不是数字!"
fi

shell综合题
脚本说明:
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/bashRevertInput ()
{read -p "Please input three args:" num1 num2 num3if [ -z $num1 ] || [ -z $num2 ] || [ -z $num3 ]thenecho "Illegal parameters"elseecho "$num3"echo "$num2"echo "$num1"fi
}RevertInput
~           

shell综合题