shell脚本语句练习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Shell脚本练习题
1、编写shell脚本,计算1-100的和
1#!/bin/bash
2 #caculate the sum of numbers from 1 to 100
3
4 sum=0
5 for i in `seq 1 100`; do
6 sum=$[$sum+$i]
7 done
8 echo $sum
2、编写shell脚本,要求输入一个数字,然后计算出从1到输入数字的和,要求,输入的数字小于1则重新输入,直到输入正确的数字为止。
1 #! /bin/bash
2 j=0
3 while [ $j -lt "1" ]; do
4 read -p "请输入数字不能小于"1":" j
5 done
6 sum=0
7 for i in `seq 1 $j`;do
8 sum=$[$i+$sum]
9 done
10 echo $sum
3、编写shell脚本,把/root/目录下的所有目录拷贝到/tmp/目录下。
1.#! /bin/bash
2.for i in `ls /root/`;do
3.if [ -d $i ];then
4.cp -r $i /tmp/
5.fi
6.done
4、编写shell脚本,批量建立用户user_00,user_01,…,user_100并且所有用户属于users组。
1.#! /bin/bash
2.i=0
3.for i in `seq 1 100`;do
erdel -r user_0$i
5.done
5、编写shell脚本,截取文件test.log中包含关键词”abc”的行中的第一列(假设分隔符为”:”),然后把截取的数字排序(假设第一列为数字),然后打印出重复次数超过10次的列。
1.#! /bin/bash
2.awk -F':' '$0~/abc/ {print $1}' test.log >/tmp/n.txt
3.sort -n n.txt |uniq -c |sort -n >/tmp/n2.txt
4.awk '$1>10 {print $2}' /tmp/n2.txt
6、编写shell脚本,判断输入的IP是否正确(IP的规则是,n1,n2,n3,n4,其中1 1.#! /bin/bash 2.checkip() { 3.if echo $1 |egrep -q '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' ; then 4.a=`echo $1 | awk -F. '{print $1}'` 5.b=`echo $1 | awk -F. '{print $2}'` 6.c=`echo $1 | awk -F. '{print $3}'` 7.d=`echo $1 | awk -F. '{print $4}'` 8.for n in $a $b $c $d; do 9.if [ $n -ge 255 ] || [ $n -le 0 ]; then 10.echo "the number of the IP should less than 255 and greate than 0" 11.return 2 12.fi 13.done 14.else 15.echo "The IP you input is something wrong, the format is like 192.168.100.1" 16.return 1 17.fi 18.} 19.rs=1 20.while [ $rs -gt 0 ]; do a)read -p "Please input the ip:" ip b)checkip $ip c)rs=`echo $?` 21.done 22.echo "The IP is right!" 7、自动编译安装httpd服务器的脚本 1.#!/bin/bash 2.# 自动编译安装httpd服务器的脚本 3.cd /usr/src/httpd-2.2.17/ 4../configure --prefix=/usr/local/httpd --enable-so &> /dev/null 5.make &> /dev/null 6.make install &> /dev/null 7.# …… 8、查看内存占用情况 #!/bin/bash USED=$(free | grep "buffers/cache:" | awk '{print $3}') TOTAL=$(free | grep "Mem:" | awk '{print $2}') USAGE=$(expr $USED \* 100 / $TOTAL) echo "实际内存占用情况:$USAGE%" 9、备份文件,及使用情况 #!/bin/bash TARFILE=beifen-`date +%s`.tgz tar zcf $TARFILE $* &> /dev/null echo "已执行$0 脚本," echo "共完成$# 个对象的备份" echo "具体内容包括:$*" 10、MySQL数据库逻辑备份脚本 #!/bin/bash # 这是一个简化的MySQL数据库逻辑备份脚本 # 1. 定义数据库连接、目标库信息 MY_USER="operator" MY_PASS="pwd123" MY_HOST="192.168.4.22" MY_CONN="-u $MY_USER -p$MY_PASS -h $MY_HOST" MY_DB1="studydb" MY_DB2="coursedb" # 2. 定义备份目录、工具、时间、文件名主体 BF_DIR="/opt/qnzx_dbbak/" BF_CMD="/usr/local/bin/mysqldump" BF_TIME=`date +%Y%m%d-%H%M` NAME_1="$MY_DB1-$BF_TIME" NAME_2="$MY_DB2-$BF_TIME" # 3. 先导出为.sql脚本,然后再进行压缩(打包后删除原文件)cd $BF_DIR/ $BF_CMD $MY_CONN --databases $MY_DB1 > $NAME_1.sql $BF_CMD $MY_CONN --databases $MY_DB2 > $NAME_2.sql /bin/tar zcf $NAME_1.tar.gz $NAME_1.sql --remove &> /dev/null /bin/tar zcf $NAME_2.tar.gz $NAME_2.sql --remove &> /dev/null 11、查看cup,用户,及内存情况 #!/bin/bash echo "Running Processes: $(ps aux | wc -l)" echo "Login Users: $(who | wc -l)" echo "Usage of / Filesystem: $(df -h | grep "/$" | awk '{print $4}')" 12、查看用户是否为root用户,是否能查看磁盘 #!/bin/bash if [ "$USER" != "root" ] then