• shell脚本 基础应用


    变量分为普通变量可只读变量

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    #普通变量
    #!/bin/bash
    name="chen" 
    echo "${name}"
     
    下面是执行结果
    ---------------------------
    [root@localhost ~]# sh t1.sh
    chen
     
     
    #只读变量 只读变量就是只可以阅读,不可以进行二次修改
    #!/bin/bash
    name="chen"
    readonly name
    name="chenyiyuan"
     
    下面是执行结果
    ------------------------------
    [root@localhost ~]# sh t1.sh
    t1.sh:行4: name: 只读变量
     
    #删除变量
    #!/bin/bash
    name="chen"
    unset name
    echo "${name}"
     
    下面是执行效果  执行效果为空
    -------------------------------
    [root@localhost ~]# sh t1.sh
     
    :<<EOF
    给变量命名的注意事项:
      1.命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
      2.中间不能有空格 不可以使用下划线
      3.不能使用标点符号
      4.不可以使用bash中的关键字
    EOF
     
    :<<EOF
    变量的类型
     1.局部变量
     2.环境变量:
     可以自己定义环境变量
    [root@localhost ~]# vim /etc/profile
     -----------------------
     export NAME="chen"
     -----------------------
    [root@localhost ~]# source /etc/profile //执行这条命令之后才可以是环境变量生效,在任何的shell脚本中都可以使用
    EOF

      特殊变量

    特殊变量 含义
    $$ Shell本身的PID(ProcessID)
    $! Shell最后运行的后台Process的PID
    $? 最后运行的命令的结束代码(返回值)
    $- 使用Set命令设定的Flag一览
    $* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
    $@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
    $# 添加到Shell的参数个数
    $0 Shell本身的文件名
    $1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #!/bin/bash
    echo "shell的本身ID为: $$"
    echo "执行的文件名为: $0"
    echo "第一个参数为: $1"
    echo "第二个参数为: $2"
    echo "第三个参数为: $3"
    echo "所有传递的参数个数为:  $#"
    echo "所有传递的参数: $*  $@"
     
    执行结果
    -----------------------------------------
    [root@localhost ~]# sh t1.sh 1 2 3
    shell的本身ID为: 26861
    执行的文件名为: t1.sh
    第一个参数为: 1
    第二个参数为: 2
    第三个参数为: 3
    所有传递的参数个数为:  3
    所有传递的参数: 1 2 3  1 2 3
    —————————————————————————————————————————

      

    shell字符串

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    :<<EOF
    单引号和双引号的区别:
     1.单引号中的任何字符都会以字符串的形式输出,所以如果变量是用单引号引起来的就是无效的变量
     #!/bin/bash
     name="chen"
     echo '${name}'
     
    执行效果如下
    -------------------------------
     [root@localhost ~]# sh t1.sh
     ${name}
    -------------------------------
     2.双引号中可以有变量,而且可以有转义字的出现
     ----------------------------------
     #!/bin/bash
     name="chen"
     str="hello,my name is "$name" "
     echo -e ${str}  //-e可以识别转义字符
     -----------------------------------
     执行效果如下 可以看出换了一行
     -------------------------
     [root@localhost ~]# sh t1.sh
    hello,my name is "chen"
     
    EOF
     
    获取字符串的长度
    #!/bin/bash
    name="chen"
    echo ${#name} 
    执行结果
    ------------------------------
    [root@localhost ~]# sh t1.sh
    4
    ------------------------------
     
    提取字符串中的子字符串
    #!/bin/bash
    name="chen19990920"
    echo ${name:4:5}  //冒号后面的第一个数字是字符串的下标,就是从哪里开始提取,后面的一个数字是要提取多少个字符
    执行结果
    ---------------------------
    [root@localhost ~]# sh t1.sh
    19990
    ---------------------------
     
    查找一个字符串中某个字符的个数
    #!/bin/bash
    name="chen19990920"
    echo `expr index "${name}" 9`
     
    执行结果
    -------------------------------
    [root@localhost ~]# sh t1.sh
     6
    -------------------------------

      

    shell算数运算符

    1
    :<<EOF

       +:对两个变量做加法。

       -:对两个变量做减法。

      *:对两个变量做乘法。 //需要加转义字符

      /:对两个变量做除法。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    EOF<br><br>#!/bin/bash
    a=10
    b=2
    echo `expr $a + $b`
    echo `expr $a - $b`
    echo `expr $a * $b`
    echo `expr $a / $b
    执行结果
    ------------------------------
    [root@localhost ~]# sh t1.sh
    12
    8
    20
    5
    -----------------------------<br>:<<EOF

        **:对两个变量做幂运算。

        %:取模运算,第一个变量除以第二个变量求余数。

       +=:加等于,在自身基础上加第二个变量。

       -=:减等于,在第一个变量的基础上减去第二个变量。

       *=:乘等于,在第一个变量的基础上乘以第二个变量。

       /=:除等于,在第一个变量的基础上除以第二个变量。

       %=:取模赋值,第一个变量对第二个变量取模运算,再赋值给第一个变量。

    1
    EOF

     

      

    shell循环

     for循环

    while循环

  • 相关阅读:
    随笔
    随笔
    随笔1
    随笔2
    intellij-maven-imports-have-broken-classpath
    如何使用idea把web项目打成war包
    spring-wind 搭建过程问题记录
    windows 64位 安装mvn提示 不是内部或外部命令
    面试碰到“为何从上家离职”...
    nginx 两台机器 出现退款失败问题
  • 原文地址:https://www.cnblogs.com/Zrecret/p/11993485.html
Copyright © 2020-2023  润新知