shell脚本例子集锦(习题总结)



shell脚本例子集锦(习题总结)

(2011-07-22 17:18:30)
标签:

杂谈

 
练习一:写一个脚本
            1.设定变量FILE的值为/etc/passwd
            2.依次向/etc/passwd中的每个用户问好,并且说出对方的ID是什么
              形如:(提示:LINE=`wc -l /etc/passwd | cut -d" " -f1`)
                Hello,root,your UID is 0.
            3.统计一个有多少个用户
        答案一:#!/bin/bash
                    file="/etc/passwd"
                    LINES=`wc -l $file | cut -d" " -f1`
                    for I in `seq 1 $LINES`;do
                    userid=`head -$I $file | tail -1 |cut -d: -f3`
                    username=`head -$I $file | tail -1 |cut -d: -f1`
                    echo "hello $username,your UID is $userid"
                    done
                    echo "there are $LINES users"
        答案二:#!/bin/bash
                    file=/etc/passwd
                    let num=0
                    for I in `cat $file`;do
                    username=`echo "$I" | cut -d: -f1`
                    userid=`echo "$I" | cut -d: -f3`
                    echo "Hello,$username,your UID is $userid"
                    num=$[$num+1]
                    done
                    echo "there are $num users"
练习二:写一个脚本
          1.切换工作目录至/var
          2.依次向/var目录中的每个文件或子目录问好,形如:
              (提示:for FILE in /var/*;或for FILE in `ls /var`;)
              Hello,log
          3.统计/var目录下共有多个文件,并显示出来
  答案:#!/bin/bash
                cd /var
                let num=0
                for I in `ls /var/*`;do
                echo "hello $I"
                num=$[$num+1]
                done
                echo "the number of files is $num"
练习三:写一个脚本
          1.设定变量file的值为/etc/passwd
          2.使用循环读取文件/etc/passwd的第2,4,6,10,13,15行,并显示其内容
          3.把这些行保存至/tmp/mypasswd文件中
  答案:#!/bin/bash
            file="/etc/passwd"
            for I in 2 4 6 10 13 15;do
            exec 3>/tmp/mypasswd
            line=`head -$I $file | tail -1`
            echo "$line"
            echo "$line" >&3
            exec 3>&-
            done
练习四:写一个脚本
              传递两个整数给脚本,让脚本分别计算并显示这两个整数的和,差,积,商
                答案如下:vim test.sh
                                    #!/bin/bash
                                      echo "first number $1"  (表示输出第一个数)
                                        echo "second number $2" (表示输出第二个数)
                                        echo " $(($1+$2))"          (输出两数之和)
                                        echo "$[$1-$2]"                (输出两数之差)
                                      echo "$[$1*$2]"                (输出两数之积)
                                        echo "$[$1/$2]"                (输出两数之商)
                                      :wq                                      (表示保存并退出vi编辑器)
                                      chmod +x test.sh            (给test.sh执行的权限)
                                      ./test.sh 2 3                  (传递两个参数并执行脚本         
作业一:写一个脚本:
            1.创建目录/tmp/scripts
            2.切换工作目录至此目录中
            3.复制/etc/pam.d目录至当前目录,并重命名为test
              4.将当前目录的test及其里面的文件和子目录的属主改为redhat
            5.将test及其子目录中的文件的其它用户的权限改为没有任何权限
      答案:
            #!/bin/bash
              mkdir -v /tmp/scripts
            cd /tmp/scripts
            cp -r /etc/pam.d ./test
            chown -R redhat ./test
            chmod -R o=--- ./test
作业二:写一个脚本
            1.显示当前系统日期和时间,而后创建目录/tmp/lstest
              2.切换工作目录至/tmp/lstest
            3.创建目录a1d,b56e,6test
            4.创建空文件xy,x2y,732
            5.列出当前目录下以a,x或者6开头的文件或目录
            6.列出当前目录下以字母开头,后跟一个任意数字,而后跟任意长度字符的文件或目录
      答案:
            #!/bin/bash
              date
              mkdir -pv /tmp/lstest
            cd /tmp/lstest
              mkdir a1d b56e 6test
              touch xy x2y 732
            ls [ax6]*
            ls [[:alpha:]][[:digit:]]*
                     
作业三:写一个脚本
              添加10个用户user1到user10,但要求只有用户不存在的情况下才能添加
  答案:
            #!/bin/bash
            for I in `seq 1 10`;do
            cut -d: -f1 /etc/passwd |grep "user$I" 2>>/tmp/etc.err || useradd user$I
            done
作业四:写一个脚本
            通过ping命令测试192.168.0.151到192.168.0.254之间的所有主机是否在线
            如果在线,就显示“ip is up”
            如果不在线,就显示“ip is down”
            答案: #!/bin/bash
            for I in `seq 151 254`;do
            ping -c1 -w1 192.168.0.$I &>/dev/null && echo "192.168.0.$I is up" ||              echo "192.168.0.$I is down"
            done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值