1.编写shell脚本,计算1~100的和。
要求 使用while 和 for 循环分别实现
for循环:
#!/bin/bash
sum=0
for ((i=1; i<=100; i++));
{
sum=`expr $i + $sum`;
}
echo $sum
while循环:
#!/bin/bash
i=1
SUM=0
while [ "$i" -le 100 ]
do
SUM=`expr $i + $SUM`;
# ((i++))
# i=$(($i+1))
i=`expr $i + 1`;
done
echo $SUM
2.编写shell脚本,输入一个数字n并计算1~n的和。
要求 使用while 和 for 循环分别实现
for循环:
#!/bin/bash
read -p "input a number:" number
sum=0
for i in `seq $number`
do
sum=$((sum+i))
i=$((i+1))
done
echo "1+...+$number:$sum"
while循环:
#!/bin/bash
n=0
while [ $n -lt "1" ];
do
read -p "input a number:" n
done
sum=0
for i in `seq 1 $n`;
do
sum=$[$i+$sum]
done
echo $sum
3.编写shell脚本,批量建立用户
要求:所有用户同属于users组
#!/bin/bash
groupadd users
for i in `seq -w 0 9
uesradd -g users user_0$i4
done
4.编写shell脚本,要求实现如下功能:
(1) 当执行一个程序的时候,这个程序会让使用者选择boy或者girl;
(2) 如果使用者输入b时,就显示:He is a boy;
(3) 如果使用者输入g时,就显示:He is a girl;
(4) 如果是除了b/g以外的其他字符,就显示:I don’t know
#!/bin/bash
echo -n your choice:
read choice
case $choice in
g)echo "She is a girl.";;
G)echo "She is a girl.";;
b)echo "He is a boy.";;
B)echo "He is a boy.";;
*)echo "I don't know.";;
esac
5.编写个shell脚本将当前目录下大于10K的文件转移到/tmp目录下
#!/bin/bash
for Filename in $(ls -l |awk '$5 > 10240 {print $9}')
do
mv $Filename /tmp
done
ls -la /tmp
echo "Done!"
6.编写脚本/bin/per.sh,判断当前用户对指定的参数文件,是否不可读并且不可写
#!/bin/bash
if [ -e $1 ]
then
[ ! -r $1 -a ! -w $1 ] && echo "The file is not write and not red" || echo "The file can read or write"
else
echo "The file isn't exist"
fi
7.编写脚本/root/bin/excute.sh ,判断参数文件是否为sh后缀的普通文件,如果是,添加所有人可执行权限,否则提示用户非脚本文件
#!/bin/bash
[ -f $1 -a $(echo $1 | grep ".*\.sh") ] && chmod 755 $1;echo "yesyes" || echo " isn't a script"
8.编写shell脚本,实现1-100的猜数字游戏
#!/bin/bash
echo '可以输入q或者quit退出'
a=$[RANDOM%100+1]
while :; do
read -p '请输入一个数字(1-100):' num
i=`echo $num | sed 's/[0-9]//g'`
if [ -z "$num" ];then
echo '不能什么都不输入'
continue
fi
if [ $num == q ] || [ $num == quit ];then
exit 2
fi
if [ ! -z "$i" ];then
echo '你输入的不是数字'
continue
fi
if [ $num -lt 1 ] || [ $num -gt 100 ];then
echo '你输入的数字不再1-100内'
continue
fi
if [ $num -lt $a ];then
echo '猜错了,太小了'
elif [ $num -gt $a ];then
echo '猜错了,太大了'
else
echo '恭喜你,猜对了'
read -p '还想再来一局吗,请输入yes或者no:' ab
case $ab in
yes)
continue
;;
no)
exit
;;
*)
break
;;
esac
fi
done
echo '你有输入正确选择,默认退出'
9.判断/var/目录下的所有文件类型
#!/bin/bash
for file in /var/*
do
if [ -f "$file" ]
then
if [ -s "$file" ]
then
printf "File:$file\n"
cat "$file"
else
rm "$file"
fi
else [ -d "$file" ]
printf "Directory:$file\n"
ls "$file"
fi
printf "\n\n\n"
done