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
  • 相关阅读:
    Postman使用教程
    CAD和ArcGIS转换 矢量配准
    SAP CRM Advanced search和Simple search里Max hit表现行为的差异
    SAP CRM Product simple search的启用步骤
    如何快速定位SAP CRM订单应用(Order Application)错误消息抛出的准确位置
    如何动态修改SAP CRM WebClient UI表格栏的宽度
    如何在SAP CRM WebClient UI里创建web service并使用ABAP消费
    如何处理SAP CRM Web Service错误
    如何使用SAP CRM WebClient UI实现一个类似新浪微博的字数统计器
    如何开启SAP CRM基于WORD模板创建附件的功能
  • 原文地址:https://www.cnblogs.com/mountain2011/p/9344679.html
Copyright © 2011-2022 走看看