zoukankan      html  css  js  c++  java
  • Shell脚本学习(2)

    一 条件测试

    1.类型

    文件测试、数值比较、字符串比较

    2.小程序

    if ! test -d $1;then  #测试参数1是否是目录
        mkdir $1          #不是目录则创建目录
    fi
    if [ ! -d $1 ]; then #和上面含义相同 mkdir $1
    fi

    #test 命令 相当于 [ ] 命令
    if [ $UID -ne 0];then         #判断用户权限是否等于0
        echo "no permission"
        exit
    fi
    
    if [$USER != "root"];then     #判断用户是否是root
        echo "no permission"
        exit
    fi

    通过man test 去查看所有判断选项

     3.字符串比较

    提示:使用双引号

    ["$USER" = "root"]; echo $?

    ["$USER" == "root"]; echo $?

    [-z "$damon"] 字符长度是0

    [-n "$damon"] 字符长度不是0

    例子:

    damon@ubuntu:~$ v1=
    damon@ubuntu:~$ [ -z $v1 ];echo $?
    0
    damon@ubuntu:~$ [ -n $v1 ];echo $?
    0
    damon@ubuntu:~$ [ -n "$v1" ];echo $?
    1
    damon@ubuntu:~$ 

    可以看出字符串变量是否加双引号的结果是不一样的,加双引号的结果是正确的!

    4.数值比较

    root@ubuntu:/# [ 1 -lt 2 -a 5 -gt 10 ];echo $?
    1
    root@ubuntu:/# [ 1 -lt 2 -o 5 -gt 10 ];echo $?
    0
    
    root@ubuntu:/# [[ 1 -lt 2 && 5 -gt 10 ]];echo $?
    1
    root@ubuntu:/# [[ 1 -lt 2 || 5 -gt 10 ]];echo $?
    0

    5.If 

    #!/usr/bin/bash
    cat <<-EOF
    ###########################
    #     A.Ross              #
    #     B.Chandler          #
    #     C.Joey              #
    #     D.Richel            #
    #     E.Fibe              #
    #     F.Monica            #
    ###########################
    EOF
    
    read -p "Which person do you like best: " name
    
    if [ "$name" == "A" ];then
            echo "Ross"
    elif [ "$name" == "B" ];then
            echo "Chandler"
    elif [ "$name" == "C" ];then
            echo "Joey"
    elif [ "$name" == "D" ];then
            echo "Richel"
    elif [ "$name" == "E" ];then
            echo "Fibe"
    elif [ "$name" == "F" ]; then
            echo "Monica"
    else
            echo "Unknown name"
    fi

    6.模式匹配:case

    case只能进行字符串匹配

    case 变量 in

    模式1)

      命令序列1

      ;;

    模式2)

      命令序列3

      ;;

    *)

           无匹配后命令序列

    esac

    例子:

    #!/usr/bin/bash
    cat <<-EOF
    ###########################
    #     A.Ross              #
    #     B.Chandler          #
    #     C.Joey              #
    #     D.Richel            #
    #     E.Fibe              #
    #     F.Monica            #
    ###########################
    EOF
    
    read -p "Which person do you like best: " name
    
    case "$name" in
    A|a)
            echo "Ross"
            ;;
    B|b)
            echo "Chandler"
            ;;
    C|c)
            echo "Joey"
            ;;
    D|d)
            echo "Richel"
            ;;
    E|e)
            echo "Fibe"
            ;;
    F|f)
            echo "Monica"
            ;;
    *)
            echo "Unknown name"
            ;;
    esac

    二 循环

    1.for

    for 变量名 [in 取值列表]

    do

      循环体

    done

    for i in `seq 4`
    do
        echo i
    done 

    2.while

    while 条件

    do 

      循环体

    done

    #!/bin/bash
    i=1
    while [ $i -le 4 ]
    do
        echo "$i"
        i=$[$i+1]
    done

     三 其他

    1. 更改终端登陆界面

    更改/etc/issue中的内容

    默认内容

     issue内的各代码意义

    d 本地端时间的日期;

    l 显示第几个终端截面

    m 显示硬件的等级(i386/i486/i586/i686...);

    显示主机的网络名称;

    O 显示domain name;

    操作系统的版本(相当于uname -r);

    显示本地端时间的时间;

    S 操作系统的名称;

    v 操作系统的版本;

    2. 字符串转换命令

    tr: 可以用来删除一段信息当中的文字,或是进行文字信息的替换;

    col:可以用来处理将tab键转换成空格键;

    join:主要用在处理 两个文件当中,有相同数据的那一行,才将它加在一起 的意思。在适用join之前,你所需要处理的文件应该要事先经过排序;

    past:直接将两行贴在一起,且中间以tab键隔开

    expand:就是将tab按键转成空格键;

    unexpand:将空格转换成tab键;

    3.当创建用户后,没有创建家目录时

    cp -a /etc/skel /home/damon ///etc/skel是家目录的模板,所有账号在创建时,都是复制的该目录

    chown -R damon:damon /home/damon //设置家目录的拥有这和组拥有者

    chmod 700 /home/damon //给目录拥有者设置r w x权限

    愿有志之人,成就非凡之事。
  • 相关阅读:
    linux 命令——48 watch (转)
    linux 命令——47 iostat (转)
    linux 命令——46 vmstat(转)
    linux 命令——45 free(转)
    linux 命令——44 top (转)
    linux 命令——43 killall(转)
    linux 命令——42 kill (转)
    linux 命令——41 ps(转)
    linux 命令——40 wc (转)
    Java for LeetCode 068 Text Justification
  • 原文地址:https://www.cnblogs.com/damon-song/p/13194543.html
Copyright © 2011-2022 走看看