题目来自网络
1.编写1-100的累加
分析:此题要考虑如何得到这100个数并且将他们累加,用for循环这100个数或{1…100},seq 100 等来将这100个数得到,再用$引用数来累加。
#!/bin/bash
# 编写1到100的累加结果
for i in `seq 100`
do
sum=$(($sum+$i))
done
echo $sum
2.把/root/目录下的所有目录(只需要一级)拷贝到/tmp/目录下
分析:此题要注意只要/root下的目录且是一级目录(可以理解成只要一级目录名),如果用cp目录话会把目录下的内容复制,不符合题目要求,可以删除比较麻烦。
#!/bin/bash
# 把/root/目录下的所有目录(只需要一级)拷贝到/tmp/目录下;
cd /root/
for file in `ls`
do
if [ -d $file ]
then
mkdir /opt/$file
echo "succeed"
fi
done
3.在/root/tast/目录下的所有文件(不含目录)的文件名后面加.bak。
分析:本题其实主要考察如何给一个目录下的所有文件名加后缀,得到所有文件方法较多,改后缀可以用mv。
find /root/tast -type f -exec mv {} {}.bak \;
4.输入一个数并进行是否为正整数判断,为正整数则输出1到这个数的累加结果·
分析:练习这种题可以自己扩展考虑一些问题,如:输入空该如何,输入不是数字呢,等等;
#!/bin/bash
# 输入一个数并进行是否为正整数判断,为正整数则输出1到这个数的累加结果·
while :
do
read -p "请输入一个正整数 :" n
if echo $n | grep -q '[^0-9]'
then
echo "你没有输入一个正整数!"
continue
fi
if [ ! -n "$n" ]
then
echo "你没有输入一个正整数!"
continue
fi
if [ $n -lt 1 ]
then
echo "你没有输入大于1的数! "
continue
fi
for i in `seq $n`
do
j=$(($j+$i))
done
echo $j
exit
done
5.批量建立用户,要求用户名的格式为user_00/user_01,建立100个,且用户同属于users组。
分析:本题要考的是如何创建用户并且指定用户组,可去查看useradd的参数应用,其次如何输出00-09的格式,可以分开两次创建00-09再10-100比较麻烦,用 seq -w 可以直接实现00这样的格式。
#!/bin/bash
# 批量建立用户,要求用户名的格式为user_00/user_01,建立100个,且用户同属于users组
groupadd users
for i in `seq -w 0 100`
do
useradd -g users user_$i
done
6 .编写九九乘法表
分析:本题主要是两个九的循环,输出格式上可看echo 的参数应用。
#!/bin/bash
# 编写九九乘法表
for i in `seq 9`
do
for j in `seq $i`
do
k=$[$i*$j]
echo -ne "$i""x""$j=$k\t"
done
echo " "
done