zoukankan      html  css  js  c++  java
  • shell脚本例子集锦(习题总结)

    练习一:写一个脚本
           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
  • 相关阅读:
    Java类变量和成员变量初始化过程
    Linux命令学习笔记
    gitlab本地部署方法(ubuntu16.04+gitlab9.5.5)
    Hanoi塔
    求递归算法时间复杂度:递归树
    最大堆/最小堆
    Matlab中plot基本用法
    这是一篇叼炸天的博客
    c++ static理解
    经典排序算法+文件操作~c语言实现
  • 原文地址:https://www.cnblogs.com/sysk/p/4690209.html
Copyright © 2011-2022 走看看