美文网首页
[Bash] Bash CheatPaper

[Bash] Bash CheatPaper

作者: Quasars | 来源:发表于2017-10-06 22:01 被阅读31次

    赋值语句

    var="xxx"   #不能有空格
    

    条件判断

    &&  逻辑的 AND 的意思
    ||  逻辑的 OR 的意思
    
    if [ "$var" = "test" ];then
      echo "yes"
    fi
    
    -eq 等于 应用于:整型比较
    -ne 不等于 应用于:整型比较
    -lt 小于 应用于:整型比较
    -gt 大于 应用于:整型比较
    -le 小于或等于 应用于:整型比较
    -ge 大于或等于 应用于:整型比较
    

    字符串

    • 字符串长度
    ${#'abc'}   长度为3
    
    • 字符串打印并补空格
    printf '%10s' 'hello'
    
    • 获取文件名
    ${var##*/}
    该命令的作用是去掉变量var从左边算起的最后一个'/'字符及其左边的内容,返回从左边算起的最后一个'/'(不含该字符)的右边的内容。
    
    使用例子及结果如下:

    从运行结果可以看到,使用该命令,可以提取出我们需要的文件名file.txt。

    • 获取某路径(如当前路径)所在的文件夹
    dirname $0  获取当前脚本所在目录
    

    数组

    • 字符串以空格分割存入数组
    keys="abc ajk sb"
    arr=($keys)          #arr[0]=abc, arr[1]=ajk, arr[2]=sb
    
    • 数组元素个数
    ${#arr[@]}
    
    • 数组所有元素的值
    ${arr[*]}  或  ${arr[@]}
    
    • 遍历数组
    A:
           num=${#array[@]} 
           for((i=0;i<num;i++))
           {
               echo ${array[$i]};
           }
    B:
          for var in ${array[@]}; do
              echo $var
          done
    

    associate array

    • 定义
    declare -A ass_arr
    ass_arr=(
    ['key']='value',
    ["${key2_var}"]="val2"  
    )
    
    • 引用关联数组元素
      echo "value = ${ass_arr[$key]}"
    
      ${!ass_arr[@]}    所有key
      ${ass_arr[@]}      所有value
      ${ass_arr[$key]}         $key所在元素的值
    
    • 遍历关联数组
     for key in ${!ass_arr[@]} 
     do
         echo "key = $key; value = ${ass_arr[$key]};"
     done
    
    • 关联数组作为bash函数参数
      (传参数名进去函数)
    33 function sf
    34 {
    35     name=$1
    36     str='${!';
    37     str+=${name}
    38     str+='[@]}'
    39     eval "echo $str"
    40 }
    41
    42 declare -A conf
    43 conf[pou]=789
    44 conf[mail]="ab\npo"
    45 conf[doo]=456
    46
    47 sf "conf"
    
    • $()与``区别

    what-is-the-difference-between-$()-and-``-in-shell-programming
    The backticks/gravemarks have been deprecated in favor of $()
    for command substitution because $()
    can easily nest within itself as in $(echo foo$(echo bar))
    . There are also minor differences such as how backslashes are parsed in the backtick/gravemark version.
    See the POSIX spec for detailed information on the various differences.

    相关文章

      网友评论

          本文标题:[Bash] Bash CheatPaper

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