zoukankan      html  css  js  c++  java
  • shell 编程

    1,shell脚本程序是指以文件的形式存放Linux命令集合,该文件能够被shell解释执行

    文件里面通常包含Linux 命令,shell命令,流程控制语句,注释,通常是.sh 作为后缀名

    2,第一行指定程序来编译和执行脚本

    #! /bin/bash      #! /bin/sh

    注释行:使用(#) 符号

    3,变量

    变量名必须以字母或者下划线开头,后面可以跟字母数字下划线。任何其他字符都标志者变量名结束

    4,变量类型

    本地变量:只在创建的shell 程序中可以使用

    环境变量:所有的用户进程中可以使用,也称为全局变量,例如$JAVA_HOME,按照惯例,需要大写

    5,设置当前用户的环境变量

    在当前用户的主目录下,在 .bash_profile 下创建当前用户的全局变量

    6,位置参量

    特殊的内置变量,通常是被shell 脚本用来从命令行接受的参数,或者被函数用来保存传递它的参数

    ### test.sh shell脚本
    #! /bin/bash echo " hello world $1 $2 !!!"
    ./ test.sh my shell           ====            hello world my shell !!!
    . test.sh  your shell         ====            hello world your shell !!!    . 当前目录下的test 文件
    sh test.sh our shell          ====            hello world our shell !!!     sh+程序名     
    sh test.sh "our shell" ok ==== hello world our shell ok 位置参量有空格,需要用引号

    $0  当前脚本的文件名

    $1-$9 第一个到第九个位置参量

    ${10} 第十个位置参量,类似往下推

    $# 位置参量的个数

    $* 以但字符串显示所有的位置参量

    $@ 无引号等同于$*

    $$ 脚本运行的当前进程号

    $! 最后一个后台运行的进程的进程号

    $? 显示前面最后一个命令的退出状态,0 表示没有错误,其他任何表示有错误 

    7,shell 编程中申明一个变量

    name=chris

        申明一个数组

    arr=(name1 name2 name3)

    echo ${arr[0]}  回显出第一个

    echo $(arr[*])   回显出所有

    echo $(#arr[*]) 回显出个数

    arr[0]=tom       重新赋值

    8, date

    date + %Y-%m-%d

    date --date='2 days ago' +  %Y-%m-%d      //2天前

     9,shell 条件判断

    test -e filename 文件是否存在 if [-e filename]   [] 相当于test

    test -f filename  是否是file

    test -d filename 是否是directory

    test -r filename 是否具有可读权限

    test -w filename 是否具有可写的权限

    test -x filename 是否具有可执行的权限

    整数之间判断

    test n1 -eq n2  两数值相等(equal)

    test n1 -nq n2  两数值不相等(not equal)

    test n1 -gt n2   n1大于n2 (greater than)

    test n1 -lt n2    n1小于n2 (less than)

    test n1 -ge n2  n1大于等于n2(greater than or equal)

    test n1 -le n2   n1小于等于n2(less than or equal)

    字符串判断

    test -z string   字符串长度是否为0,空串返回true

    test -n string   字符串长度是否大于0,空串返回false , -n 可以省略

    test str1 = str2 判断str1是否等于str2,相等,返回true

    test str1 != str2 判断str1是否不等于str2,不相等,返回true

    if 判断

    if condition
    then
        command1 
        command2
        ...
        commandN
    else
        command
    fi
    
    
    if condition1
    then
        command1
    elif condition2 
    then 
        command2
    else
        commandN
    fi
    
    
    a=10
    b=20
    if [ $a == $b ]
    then
       echo "a 等于 b"
    elif [ $a -gt $b ]
    then
       echo "a 大于 b"
    elif [ $a -lt $b ]
    then
       echo "a 小于 b"
    else
       echo "没有符合的条件"
    fi


    while 语句

    while condition
    do
        command
    done

    int=1
    while(( $int<=5 ))
    do
        echo $int
        let "int++"
    done

    for 循环

    for var in item1 item2 ... itemN
    do
        command1
        command2
        ...
        commandN
    done
    
    
    for loop in 1 2 3 4 5
    do
        echo "The value is: $loop"
    done

      

  • 相关阅读:
    Docker 网络
    Dockerfile你值得拥有
    Spring boot配置成功后,出现Whitelabel Error Page的解决办法
    ubuntu 创建快捷方式
    Ubuntu Make来安装Visual Studio Code
    ubuntu16.04开机自动挂载Windows分区
    ubuntu下使用罗技Unifying
    酷开电视升级后无法启动
    ArcGIS 10.2安装错误,Error: Internal Error 2753. The File is not marked for installation
    ubuntu16.04下使用wine 运行微信开发小程序
  • 原文地址:https://www.cnblogs.com/pickKnow/p/10676532.html
Copyright © 2011-2022 走看看