zoukankan      html  css  js  c++  java
  • linux-bash编程(字符串测试 和 for循环)

    练习:
    传递一个用户名参数给脚本,判断此用户的用户名跟其基本组的组名是否一致,并将结果显示出来。
    (1)
    字符测试:
    ==:测试是否相等,相等为真,不等为假
    !=: 测试是否不等,不等为真,等为假
    >
    <
    -n string: 测试指定字符串是否为空,空则真,不空则假
    -z string: 测试指定字符串是否不空,不空为真,空则为假

    练习:写一个脚本
    传递一个参数(单字符就行)给脚本,如参数为q,就退出脚本;否则,就显示用户的参数;

    练习:写一个脚本
    传递一个参数(单字符就行)给脚本,如参数为q、Q、quit或Quit,就退出脚本;否则,就显示用户的参数;

    #!/bin/bash
    #
    if [ $1 = 'q' ];then
    echo "Quiting..."
    exit 1
    elif [ $1 = 'Q' ];then
    echo "Quiting..."
    exit 2 
    elif [ $1 = 'quit' ];then
    echo "Quiting..."
    exit 3 
    elif [ $1 = 'Quit' ];then
    echo "Quiting..."
    exit 4 
    else
    echo $1
    fi
    
    例:
    1, echo "scale=2;111/22;" | bc //保留2位小数,通过计算器bc计算111/22的值(方法1)。
    2, bc <<< "scale=2;111/22;" //保留2位小数,通过计算器bc计算111/22的值(方法2)。
    

      

    练习:
    传递三个参数给脚本,第一个为整数,第二个为算术运算符,第三个为整数,将计算结果显示出来,要求保留两位精度。形如:
    ./calc.sh 5 / 2

    练习:
    传递3个参数给脚本,参数均为用户名。将此些用户的帐号信息提取出来后放置于/tmp/testusers.txt文件中,并要求每一行行首有行号。

    写一个脚本:
    判断当前主机的CPU生产商,其信息在/proc/cpuinfo文件中vendor id一行中。
    如果其生产商为AuthenticAMD,就显示其为AMD公司;
    如果其生产商为GenuineIntel,就显示其为Intel公司;
    否则,就说其为非主流公司;

    (2)
    循环:进入条件,退出条件
    for
    while
    until

    (3)
    for 变量 in 列表; do
    循环体
    done

    例:
    for I in 1 2 3 4 5 6 7 8 9 10; do
    加法运算
    done

    遍历完成之后,退出;


    (4) 如何生成列表:
    {1..100} //生成整数列表的方法1
    `seq [起始数 [步进长度]] 结束数` //生成整数列表的方法2

    (5)
    bashshell不支持浮点数运算,同时bash shell默认的数据类型为字符型。

    (6)
    bash shell声明整形的方法:
    declare -i SUM=0 //此处的-i为 integer
    或:
    let sum=0

    写一个脚本:
    1、设定变量FILE的值为/etc/passwd
    2、依次向/etc/passwd中的每个用户问好,并显示对方的shell,形如:
    Hello, root, your shell: /bin/bash
    3、统计一共有多少个用户

    for I in `seq 1 $LINES`; do echo "Hello, `head -n $I /etc/passwd | tail -1 | cut -d: -f1`"; done

    只向默认shell为bash的用户问声好


    写一个脚本:
    1、添加10个用户user1到user10,密码同用户名;但要求只有用户不存在的情况下才能添加;

    扩展:
    接受一个参数:
    add: 添加用户user1..user10
    del: 删除用户user1..user10
    其它:退出
    adminusers user1,user2,user3,hello,hi

    #!/bin/bash
    #
    for i in (1..10); do
        if id user$i  &> /dev/null; then
            echo "user$i exists."
        else
            useradd user$i
            echo user$i | passwd --stdin user$i &> /dev/null
            echo "Add user user$i finished."
        fi
    done
    

      

    写一个脚本:
    计算100以内所有能被3整除的正整数的和;
    取模,取余:%
    3%2=1
    100%55=45

    写一个脚本:
    计算100以内所有奇数的和以及所有偶数的和;分别显示之;

    let I=$[$I+1]
    SUM=$[$SUM+$I]
    
    let SUM+=$I
    
    let I+=1 相当于 let I++
    
    -=
    let I-=1 相当于 let I--
    ++I, --I
    *=
    /=
    %=
    

      

    写一个脚本,分别显示当前系统上所有默认shell为bash的用户和默认shell为/sbin/nologin的用户,并统计各类shell下的用户总数。显示结果形如:
    BASH,3users,they are:
    root,redhat,gentoo

    NOLOGIN, 2users, they are:
    bin,ftp

    #!/bin/bash
    #
    NUMBASH=`grep "bash$" /etc/passwd | wc -l`
    BASHUSERS=`grep "bash$" /etc/passwd | cut -d: -f1`
    BASHUSERS=`echo $BASHUSERS | sed 's@[[:space:]]@,@g'`
    
    echo "BASH, $NUMBASH users, they are:"
    echo "$BASHUSERS
  • 相关阅读:
    php 生成唯一订单号
    易语言的软件乱码
    Python正则
    python3.6 安装
    python发送邮件
    python 字典生成sql语句
    python xpath
    Python pip安装Scrapy,报错Twisted
    简单验证码识别
    python mysqldb 返回字典
  • 原文地址:https://www.cnblogs.com/mountain2011/p/9344679.html
Copyright © 2011-2022 走看看