美文网首页
shell入门(一)

shell入门(一)

作者: b470b9fc7145 | 来源:发表于2017-09-14 18:12 被阅读15次

    写在前面:

    1. 下载脚本运行下,然后再看解释
    2. 注意运行环境mac
    3. sh XXX.sh(在控制台先打印sh,然后将文件拖过来,enter运行)
    4. 在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash。
      (#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。)
    5. 本教程关注的是 Bash,也就是 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。

    基本操作

    1. 没有参数的函数

    #1.没有参数的函数
    function fun1 (){
    
        echo "helloWorld"
        echo "this is fun1"
    }
    
    #运行第一行代码
    fun1
    
    echo "-------------------------"
    

    运行结果:

    helloWorld
    this is fun1
    -------------------------
    

    2.有参数函数

    #2.有参数函数
    function func2()
    {
        echo "This is func2"
    
        a=$1
        b=$2
        echo "a is : $a"
        echo "b is : $b"
    }
    #调用函数2
    func2 "aaa" "bbb"
    
    echo "-------------------------"
    

    运行结果:

    This is func2
    a is : aaa
    b is : bbb
    -------------------------
    

    3. 变量作用域,local限制在函数内,没有local默认是全局的

    #3.变量作用域,local限制在函数内,没有local默认是全局的
    function func3(){
    
    #注意=左右不要打空格
        globalValue="我是全局变量"
        local localValue="我是本地变量"
    
        echo $globalValue
        echo $localValue
    }
    
    func3
    echo "func3 调用完成...,看结果并不会打印出localValue"
    echo $globalValue
    echo $localValue
    
    echo "-------------------------"
    

    运行结果:

    我是全局变量
    我是本地变量
    func3 调用完成...,看结果并不会打印出localValue
    我是全局变量
    
    -------------------------
    

    4. 默认是字符串

    #4.默认是字符串
    function func4(){
    
        #字符串操作1:默认就是字符串
    str1=hello
    str2='hello'
    str3="hello"
    
    echo str1
    echo str2
    echo str3
    
    }
    
    func4
    
    echo "-------------------------"
    

    输出结果:

    str1
    str2
    str3
    -------------------------
    

    5. 获取字符串的长度

    #5.获取字符串的长度
    function func5(){
    
    #获取字符串的长度
    stringLengthTest="hello world"
    echo "stringLengthTest length: ${#stringLengthTest}"
    
    }
    
    func5
    
    echo "-------------------------"
    

    输出结果:

    stringLengthTest length: 11
    -------------------------
    

    6.字符串拼接($和${}并没有多大区别,区别在于作用域)

    #6.字符串拼接
    function func6(){
    
    #字符串拼接
    #$和${}并没有多大区别,区别在于作用域
    str1="hello"
    str2="world"
    
    str3=${str1}"+"${str2}
    echo ${str3}
    
    str4=$str1$str2
    echo $str4
    
    }
    
    func6
    
    echo "-------------------------"
    

    输出结果

    hello+world
    helloworld
    -------------------------
    

    7. 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。

    #7.原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
    #注意使用的是反引号 ` 而不是单引号 '
    function func7 (){
    
        a=1
        b=2
        c=`expr $a + $b`
        echo $c
    }
    func7
    
    echo "-------------------------"
    

    输出结果:

    3
    -------------------------
    

    8.数组操作-直接初始化

    #8.数组操作-直接初始化
    #初始化时不需要指定数组的大小
    function func8(){
    echo "格式一"
    my_arr=(1 2 3)
    # 遍历数组格式1
    echo "my_arr: ${my_arr[*]}"
    #获取数组长度
    echo "my_arr length: ${#my_arr[*]}"
    
    echo "格式二"
    # 遍历数组格式2
    echo "my_arr: ${my_arr[@]}"
    #获取数组长度
    echo "my_arr length: ${#my_arr[@]}"
    
    echo "获取数组某个元素"
    echo "第1个元素: ${my_arr[1]}"
    
    echo "数组赋值"
    my_arr[0]=a
    my_arr[1]=b
    my_arr[223]=c # 不连续初始化
    echo "my_arr: ${my_arr[@]}"
    
    }
    
    func8
    

    输出结果:

    格式一
    my_arr: 1 2 3
    my_arr length: 3
    格式二
    my_arr: 1 2 3
    my_arr length: 3
    获取数组某个元素
    第1个元素: 2
    数组赋值
    my_arr: a b 3 c
    

    注意点

    1. 变量默认是全局变量
    2. ${ }用于变量替换。一般情况下,$var 与${var} 并没有啥不一样。但是用 ${ } 会比较精确的界定变量名称的范围。
    3. 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。(注意使用的是反引号 ` 而不是单引号 ')
    4. Bash 只支持一维数组,用圆括号()来表示,初始化时不需要指定数组的大小

    下篇讲逻辑运算

    参考文档

    Linux shell 中$() ,${},$[] $(()),[ ] (( )) [[ ]]作用与区别
    Shell 基本运算符

    相关文章

      网友评论

          本文标题:shell入门(一)

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