• Shell编程语法


    创建shell程序的步骤:
    第一步:创建一个脚本文件.sh。
    第二步:授予权限使它可以执行chmod u+x .sh
    第三步:执行 ./example 或者 sh example
    脚本调试:  
          sh -x script : 执行脚本显示所有变量的值
      sh -n script : 不执行脚本,只是检查语法,返回语法错误

    shell结构:

    1. #!指定执行脚本的shell

    2. #注释行

    3. 命令和控制结构

     

    变量: 临时变量和永久变量(环境变量)

    设置变量:  习惯上用大写字母来命名变量。变量名只能以字母表中的字符开头,不能用数字。

    变量赋值: 赋值号“=”两边应没有空格

      定义时赋值,如NUM=1

      将一个命令的执行结果赋给变量,如:TIME=`date`

      将一个变量赋给另一个变量,如:A=$B

    注:

    包含多个字的变量:  $NAME=Mike Ron会报错,要使用 $NAME=“Mike Ron”或$NAME=‘Mike Ron’

    单引号和双引号的区别:

       单引号之间的内容会被bash进行解释,会原封不动地指定给了变量。

           双引号中的内容只有在【$、`  `、双引号、/和换行符】五种特殊字符修饰时才可以被转义输出,其他的不动。

    删除变量: #unset NAME

    查看变量:

      列出所有变量: # set

      使用echo命令查看变量值。例如:echo $A

    位置变量:$n 这个程序的第n个参数值,n=1-9

    例如:

      ls -l file1 file2 file3

      $0 这个程序的文件名 ls -l

     
    特殊变量:

    $? 执行上一个命令的返回值   $* 这个程序的所有参数   $# 这个程序的参数个数   $$ 这个程序的PID   $! 执行上一个后台命令的PID

    变量测试语句:test    可用[]进行简化

    整数测试:

    test int1 -eq int2 测试整数是否相等

    test int1 -ge int2 测试int1是否>=int2

    test int1 -gt int2 测试int1是否>int2

    test int1 -le int2 测试int1是否<=int2

    test int1 -lt int2 测试int1是否<int2

    test int1 -ne int2 测试整数是否不相等

    字符串测试:

    test str1=str2 测试字符串是否相等

    test str1!=str2 测试字符串是否不相等

    test str1 或 test -n str1 测试字符串是否不为空

    str1 test -z str1 测试字符串是否为空

    文件测试:

    test -d file 指定文件是否目录

    test -f file 指定文件是否常规文件

    test -x file 指定文件是否可执行

    test -r file 指定文件是否可读

    test -w file 指定文件是否可写

    test -a file 指定文件是否存在

    test -s file 文件的大小是否非0

    流控制语句:

    exit语句:退出程序执行,并返回一个返回码,返 回码为0表示正常退出,非0表示非正常退出。

    选择语句:if语句  或  case---esac语句

    格式一:if 条件 then 命令 fi

    格式二:

    if 条件1  then

      命令1 

    elif 条件2 then

      命令2

    else

      命令3

    fi

    多个条件的联合:

      逻辑与:-a

      逻辑或:  -o

    格式三:

    case 变量 in   
      字符串1)            
        命令列表1
           ;;       ………      字符串n)    
        命令列表n      ;;
    esac
     
    格式四:把关键字中每一项做成类似表单的形式,通过输入交互的方式执行相应的命令
     select  变量  in  关键字
     do
      命令列表
     done

     
     

    循环语句:

    格式一:

       for 变量 in 名字表

             do

        命令列表

             done

    格式二:until当条件为真时执行;

      while 条件

      do

        命令

      done

    格式三:until当条件为假时执行;

      until 条件

      do

        命令  

      done

    跳出循环:

    break:跳出整个循环

    continue:跳过本次循环,进行下次循环

    参数移动:

    shift:参数左移,每执行一次,S#值减1,用于分别处理每个参数,移出去的参数不再可用;

     

    Shell命令:

    read命令:从键盘读数据,赋值给变量    如:read USERNAME

    expr命令:对整数型变量进行算术运算    如: $ expr 3 * 10  ,   var2=`expr 30 /  $var1`  【注意不是「'」而是 「`」】

    注意:

      运算符左右都有空格
      使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义。

    awd命令: 

      awk -F  分隔符  '命令'

    注:分隔符不填,默认为空格;

    例如:输入系统中UID为0的用户名

      awd -F: '$3==0 {print $1}'  /etc/passwd

    应用函数:

    定义函数:

      函数名()

      {   

        命令列表

      }

    调用函数: 函数名  参数1 参数2…

    注:函数的中变量均为全局变量

  • 相关阅读:
    49. 字母异位词分组
    73. 矩阵置零
    Razor语法问题(foreach里面嵌套if)
    多线程问题
    Get json formatted string from web by sending HttpWebRequest and then deserialize it to get needed data
    How to execute tons of tasks parallelly with TPL method?
    How to sort the dictionary by the value field
    How to customize the console applicaton
    What is the difference for delete/truncate/drop
    How to call C/C++ sytle function from C# solution?
  • 原文地址:https://www.cnblogs.com/zhaojinxin/p/7649915.html
Copyright © 2020-2023  润新知