shell脚本语句练习题

更新时间:2023-10-21 00:07:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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 \

4 read -p \请输入数字不能小于\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 4. userdel -r user_0$i 5. done 5、编写shell脚本,截取文件test.log中包含关键词”abc”的行中的第一列(假设分隔符为”:”),然后把截取的数字排序(假设第一列为数字),然后打印出重复次数超过10次的列。

1. 2. 3. 4. #! /bin/bash

awk -F':' '$0~/abc/ {print $1}' test.log >/tmp/n.txt sort -n n.txt |uniq -c |sort -n >/tmp/n2.txt 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 \ 11. return 2 12. fi 13. done 14. else

15. echo \ 16. return 1 17. fi 18. }

19. rs=1

20. while [ $rs -gt 0 ]; do

a) read -p \ b) checkip $ip c) rs=`echo $?` 21. done

22. echo \

7、自动编译安装httpd服务器的脚本 1. #!/bin/bash 2. 3. 4. 5. 6. 7.

# 自动编译安装httpd服务器的脚本 cd /usr/src/httpd-2.2.17/

./configure --prefix=/usr/local/httpd --enable-so &> /dev/null make &> /dev/null

make install &> /dev/null # ……

8、 查看内存占用情况

#!/bin/bash

USED=$(free | grep \

TOTAL=$(free | grep \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=\MY_PASS=\

MY_HOST=\

MY_CONN=\MY_DB1=\MY_DB2=\

# 2. 定义备份目录、工具、时间、文件名主体 BF_DIR=\

BF_CMD=\BF_TIME=`date +%Y%m%d-%H%M` NAME_1=\NAME_2=\

# 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 \echo \

echo \12、查看用户是否为root用户,是否能查看磁盘 #!/bin/bash

if [ \then

echo \错误:非root用户,权限不足!\ exit 1 fi

fdisk -l /dev/sda

13、查看是否安装sysstat监控软件,及安装 #!/bin/bash

rpm -q sysstat &> /dev/null if [ $? -eq 0 ] then

echo \已安装 `rpm -q sysstat`\else

echo \未安装,尝试自动安装\ RHEL_DIR=\ if [ -d $RHEL_DIR ] then

cd $RHEL_DIR

rpm -ivh sysstat-*.rpm && echo \安装完成。\ else

echo \错误:无法访问光盘目录:$RHEL_DIR\ fi fi

本文来源:https://www.bwwdw.com/article/parf.html

Top