###张小强>**`作业答案`**- 1.写一个脚本``` (1) 接受一个以上文件路径作为参数,一个路径或多个路径作为参数;(2) 显示每个文件拥有的行数;(3) 并且说明一共统计了有多少文件,且一共多少行;``````if [ $# -lt 1 ];then echo " $0 PATH1 PATH2.... " exit 1fideclare -i linedeclare -i lines=0declare -i FILE_NUMS=0PATH_NUMS=$## 这里的注意点在于:使用变量去参数名需要这里来取:${!i} == $1 == 参数1for i in `seq $PATH_NUMS`; do if [ -e ${!i} ];then line=$(wc -l ${!i} | cut -d" " -f1) lines=$[ $lines+$line ] let FILE_NUMS++ echo -e "\E[1;33m${!i}有$line行 \033[0m" else echo -e "\E[1;31m${!i}不存在 \033[0m" fidoneecho -e "\E[1;33m一共统计了$FILE_NUMS个文件,一共$lines行 \033[0m" ```- 2.写一个脚本```(1) 传递两个以上的字符串当作用户名,可以是3个也可以是多个哦,不限于两个哦;(2) 创建这些用户;且密码同用户名;(3) 统计一共创建了几个用户;``````#!/bin/bash# (1) 传递两个以上字符串当作用户名;# (2) 创建这些用户;且密码同用户名;# (3) 总结说明共创建了几个用户;if [ $# -lt 2 ];then echo "请输入两个以上的用户名作为参数" exit 1fideclare -i USER_NUMS=0ARGS=$#for i in `seq $ARGS`; do if id ${!i} &> /dev/null;then # 如果用户存在 echo -e "\E[1;31m用户${!i}存在 \033[0m" else # 如果用户不存在 useradd ${!i} echo "${!i}" | passwd --stdin ${!i} &> /dev/null let USER_NUMS++ echo -e "\E[1;33m创建用户${!i} \033[0m" fidoneecho -e "\E[1;34m一共创建了$USER_NUMS \033[0m"```- 3、写一个脚本```(0)给脚本传递两个数值用于指定用户的范围,例如:1 20 则创建20个用户 或 101 200 则创建100个用户(1)批量新建用户,如:student1---student20, 或 student101---student200; (2)密码与用户名相同;(3)如果用户已经存在就不统计其UID,并给出提示(4)计算新建用户的UID之和;``````#!/bin/bash# (0)给脚本传递两个数值用于指定用户的范围,例如:1 20 则创建20个用户 或 101 200 则创建100个用户# (1)批量新建用户,如:student1---student20, 或 student101---student200; # (2)密码与用户名相同;# (3)如果用户已经存在就不统计其UID,并给出提示# (4)计算新建用户的UID之和;declare -i IDdeclare -i ID_SUM=0for i in `seq $1 $2`; do if id student$i &> /dev/null ;then # 如果用户存在 echo -e "\E[1;31m用户student$i已经存在 \033[0m" else useradd student$i echo "student$i" | passwd --stdin student$i &> /dev/null ID=$(id -u student$i) ID_SUM=$[ ID_SUM+ID ] echo -e "\E[1;34m创建了用户student$i \033[0m" fidoneecho -e "\E[1;33m用户的UID之和为:$ID_SUM \033[0m"```- 4、写一个脚本```(1)分别统计/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#号开头的行数之和,以及总的空白行数;``````#!/bin/bash# 分别统计/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#号开头的行数之和,以及空白行数之和;declare -i Line1=0declare -i Line2=0for file in /etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions /etc/fstab; do Line1=$[ $Line1+$(egrep "^#" $file | wc -l) ] Line2=$[ $Line2+$(egrep "^[[:space:]]*$" $file | wc -l) ]doneecho -e "\E[1;33m#号开头的行数之和为:$Line1\033[0m"echo -e "\E[1;31m空白行数之和:$Line2\033[0m"```- 5、写一个脚本```(1)显示当前系统上所有默认shell为bash的用户的用户名、UID以及此类所有用户的UID之和;``````#!/bin/bashegrep "/bin/bash" /etc/passwd | cut -d: -f1egrep "/bin/bash" /etc/passwd | cut -d: -f3declare -i sum=0for i in `egrep "/bin/bash" /etc/passwd | cut -d: -f3`;do sum=$[ $i+$sum ] done echo -e "\E[1;33mUID之和为:$sum\033[0m"```- 6、写一个脚本```(1)使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;(2)在线的主机使用绿色显示;(3)不在线的主使用红色显示;(4)请使用函数完成``````#!/bin/bash# 使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;# 在线的主机使用绿色显示;# 不在线的主使用红色显示;PING(){ if ping -c1 -w1 172.16.250.$1 &> /dev/null;then # 可以ping通 echo -e "\E[1;32m172.16.250.$1 在线\033[0m" else # 不能ping通 echo -e "\E[1;31m172.16.250.$1 不在线\033[0m" fi
转载于:https://www.cnblogs.com/Dust-disappear/p/7391481.html