shell

作者: liboxiang | 来源:发表于2019-02-19 20:58 被阅读6次

    一、概念

    • Shell就是一个命令行解释器,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统。
    • shell script是利用shell的功能所写的一个程序
    • Linux的Shell种类
    • Bourne Shell(/usr/bin/sh或/bin/sh)
    • Bourne Again Shell(/bin/bash)
    • C Shell(/usr/bin/csh)
    • K Shell(/usr/bin/ksh)
    • Shell for Root(/sbin/sh)
    • ……

    二、bash

    教程:https://www.w3cschool.cn/shellbook/

    1、知识点

    • #!/bin/bash -v 该行告诉操作系统使用用#! 符号之后面的解释器以及相应的参数来解释该脚本文件,通过分析第一行,我们发现对应的解释器以及参数是 /bin/bash -v,则相当于/bin/bash -v 脚本, -v 是要打印程序的源代码。只有直接运行脚本文件的时候,这一行才会起作用(./脚本),如果使用bash 脚本这种方式运行脚本,则该行不起作用。
    • #!/usr/bin/env bash
      env的作用就是为了找到正确的脚本解释器(这里就是bash),在不同的Linux系统上该解释器可能所处的位置不同。
    • 执行shell脚本,要使用./test.sh。直接写 test.sh,linux 系统会去 PATH 里寻找有没有叫 test.sh 的。

    2、命令

    • 命令后面不需要分号
    • 变量命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
    • 复制操作时,变量名和等号之间不能有空格
    • 只读设置readonly 变量名
    #!/usr/bin/env bash
    myname="liboxiang"
    readonly myname
    echo $myname
    myname="lihaoman"
    echo myname
    

    执行结果

    liboxiang
    ./test.sh: line 5: myname: readonly variable
    myname
    
    • 删除变量unset 变量名
    #!/usr/bin/env bash
    myname="liboxiang"
    echo $myname
    unset myname
    myname="lihaoman"
    echo myname
    

    执行结果如下

    liboxiang
    myname
    
    • 字符串
    • 可以用单引号,也可以用双引号,也可以不用引号
    • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
    • 双引号里可以有变量、双引号里可以出现转义字符
    • 字符串拼接
    #!/usr/bin/env bash
    myname="liboxiang"
    yourname="lihaoman"
    str1="hello myname $myname"
    str2="hello "$myname$yourname
    echo $str1
    echo $str2
    

    执行结果

    hello myname liboxiang
    hello liboxianglihaoman
    
    • 获取字符串长度
    #!/usr/bin/env bash
    myname="liboxiang"
    echo ${#myname}
    

    执行结果
    9

    • 提取子字符串,下标由0开始
    #!/usr/bin/env bash
    myname="liboxiang"
    echo ${myname:2:4}
    

    执行结果
    boxi

    相关文章

      网友评论

          本文标题:shell

          本文链接:https://www.haomeiwen.com/subject/dotynxtx.html