shell脚本语句练习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档