• Shell笔记


    #!/bin/bash
    var2 = 'var2'
    echo $var2
    echo ${var2}
    var2 = 'var2_1' #变量可以重复定义但变量名前不加$
    
    var3 = 'var3'
    readonly var3 #将var3声明为只读变量
    #var3 = 'var3_1' 这里就不能再改变var3的值了
    
    var4 = 'var4'
    unset var4 #删除var4变量
    #echo ${var4} 这里不能再调用var4了
    
    var5 = 'var5'
    var6 = "This is ${var5}"       #拼接字符串
    var7 = "This is "$var5" ,too" #拼接字符串
    
    var8 = 'itvar8'
    echo ${#var8} #输出var8的长度,即输出6
    
    var9 = 'Hello World!'
    echo ${var9:1:5} #从字符串第2个字符开始截取5个字符
    
    var10 = 'Hello World!'
    echo `expr index "$var10" World` #查找字符World在字符串中的位置
    
    arr1 = ('var1' 'var2' 'var3') #定义数组方式1
    arr2 = (                           #定义数组方式2
        'var1'
        'var2'
        'var3'    
    )
    
    var3[1] = 'var2'            #通过下标赋值
    
    var_arr_1 = ${var2[1]}  #读取数组元素
    var_arr_all = ${var2[@]}#读取所有元素
    
    arr_lend_1 = ${#var2[@]} #获取数组长度
    arr_lend_2 = ${#var2[*]} #获取数组长度

    向脚本传递参数

    #!/bin/bash
    echo "执行的文件名$0";
    echo "第一个参数为$1";
    echo "第二个参数为$2";

      运行:

    $ chmod +x shell.sh 
    $ ./shell.sh 1 2
    执行的文件名shell.sh
    第一个参数为1
    第二个参数为2

      特殊参数:

    参数处理     说明
    $#     传递到脚本的参数个数
    $*     以一个单字符串显示所有向脚本传递的参数。
    如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
    $$     脚本运行的当前进程ID号
    $!     后台运行的最后一个进程的ID号
    $@     与$*相同,但是使用时加引号,并在引号中返回每个参数。
    如"$@"用「"」括起来的情况、以"$1" "$2""$n" 的形式输出所有参数。
    $-     显示Shell使用的当前选项,与set命令功能相同。
    $?     显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

      

    算术运算:

      原生bash不支持简单的数学运算,但是可以通过其他命令来实现,比如awk和expr

    #!/bin/bash
    
    a=10
    b=20
    val=`expr $a + $b`
    echo "a + b : $val"

    文件测试运算符:

      -r file :文件是否可读

      -w file: 文件是否可写

      -x file: 文件是否可执行

    file="/workplace/shell/shell.sh"
    if [ -r $file ]
    then
       echo "文件可读"
    else
       echo "文件不可读"
    fi
    if [ -w $file ]
    then
       echo "文件可写"
    else
       echo "文件不可写"
    fi
    if [ -x $file ]
    then
       echo "文件可执行"
    else
       echo "文件不可执行"
    fi

    echo命令:

    #!/bin/bash
    
    read name   #read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量
    echo $name
    
    echo "Hello World" > myfile #显示结果定向至文件 

    流程控制:

      if的语法:

    if condition1
    then
        command1
    elif condition2 
    then 
        command2
    else
        commandN
    fi

      for的语法:

    for var in item1 item2 ... itemN
    do
        command1
        command2
        ...
        commandN
    done

      while的语法:

    while condition
    do
        command
    done

      例:

    #!/bin/sh
    int=1
    while(( $int<=5 ))
    do
            echo $int
            let "int++"
    done

      case的语法:

    echo '输入 1 到 4 之间的数字:'
    echo '你输入的数字为:'
    read aNum
    case $aNum in
        1)  echo '你选择了 1'
        ;;
        2)  echo '你选择了 2'
        ;;
        3)  echo '你选择了 3'
        ;;
        4)  echo '你选择了 4'
        ;;
        *)  echo '你没有输入 1 到 4 之间的数字'
        ;;
    esac

      

    函数

    funWithParam(){
        echo "第一个参数为 $1 !"
        echo "第二个参数为 $2 !"
        echo "第十个参数为 $10 !"
        echo "第十个参数为 ${10} !"
        echo "第十一个参数为 ${11} !"
        echo "参数总数有 $# 个!"
        echo "作为一个字符串输出所有参数 $* !"
    }
    funWithParam 1 2 3 4 5 6 7 8 9 34 73
  • 相关阅读:
    Runloop详解
    iOS高效裁剪图片圆角算法
    Runtime详解(下)
    Runtime详解(上)
    iOS UITextfield只允许输入数字和字母,长度限制
    iOS多线程(上)——GCD详解(上)
    @property、@sythesize以及Ivar和@dynamic讲解(下)
    iOS 循环引用讲解(中)
    @property详解,@property修饰符以及各个修饰符区别(上)
    PHP 使用 OSS 批量上传图片
  • 原文地址:https://www.cnblogs.com/orlion/p/5411276.html
Copyright © 2020-2023  润新知