例6、
写一个脚本:
给定一个用户,想办法判断此用户的UID跟其基本组GID是否一致;
如果一致,就将此用户的用户名添加至/tmp/goodusers,并显示这是个好人;
否则,就将此用户的用户名添加至/tmp/badusers,并显示此人是坏蛋。
答案:
#!/bin/bash
read -t 10 -p "Give a username:" USERNAME //用read命令和键盘进行交互,让用户输入一个命令,-t后跟的是等待输入的超出时间
if ! id $USERNAME &> /dev/null || [ -z $USERNAME ] ;then
echo "No such username ."
exit 4 // 判断用户存在与否,不存在或为空即退出
fi
if [ `id -u $USERNAME` -eq `id -g $USERNAME` ] ;then //根据命令找出用户UID和GID,判断是否相等
echo "$USERNAME" >> /tmp/goodusers
echo "He is a good user." //结果输入到相应的文件,并显示是好人还是坏人
else
echo "$USERNAME" >> /tmp/badusers
echo "He is a bad user."
fi
例7、
写一个脚本:
1、设定变量FILE的值为/etc/passwd
2、依次向/etc/passwd中的每个用户问好,并显示对方的shell,形如:
Hello, root, your shell: /bin/bash
3、统计一共有多少个用户
答案:
#!/bin/bash
#
FILE=/etc/passwd //定义变量
declare -i usernum=0 //声明一个变量,其值为整型
USERNAME=`cat $FILE | cut -d: -f1` //命令取第一列的用户名
for I in $USERNAME ; do //for循环遍历所有用户,输出所有用户信息
USHELL=`grep "^$I:" $FILE | cut -d: -f7` //找出该用户所在行然后剪切它的shell信息
echo "Hello, $I , your shell: $USHELL" //输出信息
usernum+=1 //统计用户数量
done
echo "Total num is :$usernum" //这一步还可以直接用echo"`cat $FILE | wc -l`"
例8、
写一个脚本:
添加10个用户user1到user10,但要求只有用户不存在的情况下才能添加;
答案:
附加:这道题显然很简单的,但是要用对方法,像我第一次做先判断了用户存在的情况,却出现了立即退出的情况,
以下的情况你也知道,其他的当然就没执行
所以,分析这道题,只需判断用户不存在的情况就好!!
#!/bin/bash
#
for I in $(seq 1 10);do
if ! id user$I &> /dev/null ;then
useradd user$I
fi
done
例9、
写一个脚本: sum3.sh
计算100以内所有能被3整除的正整数的和
答案:
#!/bin/bash
#
declare -i sum=0 //定义变量
for I in $(seq 1 100) ;do //for 循环遍历1到100
if [$[$I%3] -eq 0 ] ;then //对所循环到的数值对3取余,如果等于0说明其能被3整除
sum+=$I //对所取到的值进行整加
fi
done
echo "$sum" //输出最后加起来的结果
例10、
写一个脚本:
计算100以内所有奇数的和以及所有偶数的和;sum1.sh sum1-1.sh
答案:
第一种方法:
和上一题的方法一样哦(大家应该明白这个过程的,就不解析了哦)
#!/bin/bash
#
declare -i sum1=0 sum2=0
for I in $(seq 1 100);do
if [$[$I%2] -eq 0 ] ;then
sum1+=$I
else
sum2+=$I
fi
done
echo "the even sum is $sum1."
echo "the odd sum is $sum2."
第二种方法:
#!/bin/bash
#
declare -i sum1=0 sum2=0 //先定义两个变量,分别代表奇数和偶数的和
for I in $(seq 1 2 100) ;do // 1和100之间的2代表步长,就是for循环第一个数后,循环下一个数要以2为单位,即全是奇数
sum1+=$I // 得到的值进行加值
done
echo "the odd sum is $sum1" //输出结果
for I in $(seq 2 2 100) ;do // 这个以2为第一个数,取值则全是偶数了
sum2+=$I //加值运算
done
echo "the even sum is $sum2" // 输出结果