shell练习——函数与数组

题目

一、编写函数,实现打印绿色OK和红色FAILED

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

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

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

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

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

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


一、编写函数,实现打印绿色OK和红色FAILED

判断是否有参数,存在为Ok,不存在为FAILED

1、编写脚本

[root@client_2 homework5]# 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@client_2 homework5]# chmod a+rx echo_color.sh

3、测试

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

1、编写脚本

[root@client_2 homework5]# vim if_no_param.sh 
#!/bin/bash
if_no_param() {
  if [ $# -eq 0 ];then
	echo "error:There are no parameters"
  fi
}
if_no_param $@

2、加可执行权限

[root@client_2 homework5]# chmod a+rx if_no_param.sh

3、测试

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

1、编写脚本

[root@client_2 homework5]# vim max_num.sh 
#!/bin/bash
max_num() {
  if [ $# -ne 2 ];then
	echo "must have only 2 parameters"
  elif ! expr $1 + $2 &> /dev/null;then
	echo "the 2 parameters must be integer"
  else
	if [ $1 -gt $2 ];then
		echo $1
	else
		echo $2
	fi
  fi
}
max_num $@

2、加可执行权限

[root@client_2 homework5]# chmod a+rx max_num.sh

3、测试

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

1、编写脚本

[root@client_2 homework5]# vim calculation.sh 
#!/bin/bash
calculation() {
  if [ $# -ne 2 ];then
	echo "must have only 2 parameters"
  elif ! expr $1 + $2 &> /dev/null;then
	echo "the 2 parameters must be integer"
  else
	echo "$1+$2=$[$1+$2]"
	echo "$1-$2=$[$1-$2]"
	echo "$1*$2=$[$1*$2]"
	echo "$1/$2=$[$1/$2]"
  fi
}
calculation $@

2、加可执行权限

[root@client_2 homework5]# chmod a+rx calculation.sh

3、测试

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

1、编写脚本

[root@client_2 homework5]# vim array_shadow.sh 
#!/bin/bash
array=(`cat /etc/shadow`)
echo ${#array[@]}

2、加可执行权限

[root@client_2 homework5]# chmod a+rx array_shadow.sh

3、测试

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

1、编写脚本

[root@client_2 homework5]# vim shell_count.sh 
#!/bin/bash
declare -A array
for line in `cut -d: -f7 /etc/passwd`
do
	let array[$line]+=1
done
for index in ${!array[*]}
do
	echo $index:${array[$index]}
done

2、加可执行权限

[root@client_2 homework5]# chmod a+rx shell_count.sh 

3、测试

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

1、编写脚本

[root@client_2 homework5]# vim file_count.sh 
#!/bin/bash
declare -A array
read -p "please input a directory path:" dir
if ! [ -d "$dir" ];then
	echo "your input is not a directory"
else
	for i in `ls $dir`
	do
		let array[${i#*.}]+=1        # 表示从变量${i}开头开始删除最短匹配的*.子串
	done
fi
for index in ${!array[*]}
do
	echo "$index:${array[$index]}"
done

2、加可执行权限

[root@client_2 homework5]# chmod a+rx file_count.sh

3、测试

over~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俗人不俗鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值