• shell的使用技巧


    一、引号的艺术

      单引号,双引号,无引号

      echo hello world    无引号时,无法使用bash的界定符如;

      echo 'hello world'    使用单引号echo时,bash不会对单引号内的变量求值,而是原样输出 

      echo "hello $world"  使用双引号时,会对引号内的变量求值

    二、赋值与相等

      var = value  相等

      var=value  赋值

    三、数学运算

      常用的数学运算如下(注意空格):

      v=1

      let v++

      let v+=6

      v=$[ v + 1 ](这里的空格可有可无)

      v=$[ $v + 1 ]

      v=$(( v + 1 ))(这里的空格可有可无)

      v=$(( $v + 1 ))

      v=`expr $v + 3 `(注意这里,+前后,3的后面都需要空格)

      v=`expr v + 3 `(这个是不行的,见上面)

      上面的数学运算只支持整形,不支持浮点运算

      浮点运算可以用bc

      echo "4 * 0.56" | bc

      echo "scale=2;3/8" | bc  设置精度为小数点后两位

      echo "obase=2;15" | bc  以二进制格式输出15,输出是1111

      echo "obase=10;ibase=2;1111" | bc  以十进制输入,以二进制输出,二进制输入1111,输出应该是15

      pi=$(echo "scale=10;4*a(1)" | bc -l)  输出圆周率pai的十位

      sin,cos,sqrt等也可以通过bc计算出来

    四、字符串操作

      获取字符串长度:length=${#var}

      字符串比较----用两个中括号:[[]]

      [[ $str1 = $str2 ]]

      [[ -n $str1 ]] str1包含的是一个非空字符串,返回真

      [[ -z $str1 ]] str1是空字符串,返回真

      if [[ -n $str1 ]] && [[ -z $str2]];

      then

        command;

      fi

      五、切分文件名

      FILE="a.bc.df.xml"

      echo ${FILE%.*} ---->a.bc.df

      echo ${FILE%%.*} ---->a

      echo ${FILE#*.} ---->bc.df.xml

      echo ${FILE##*.} ---->xml

      如何记忆呢?

      (1).两个%%(##)是贪婪的,一个是否贪婪的

      (2).%#分别位于键盘的右边和左边。所以可以记为%中的正则匹配了右边的部分,#中的正则匹配了左边的部分。

      (3).注意这里.是可以被其他字符替代的,可以用一个文件名或者目录名替换

      文件名切分实例:

      匹配目录:路径为 path=/data/user/a.bc.df.xml  求:/data/user         答案:${path%/*}

      批量重命名当前目录下的*.jpg和*.png文件

      

    #! /bin/bash
    
    count=1
    for img in *.jpg *.png
    do
        new=image-$count.${img##*.}
        mv "$img" "$new"
    
        if [ $? -eq 0 ];
        then
            echo "Renaming $img to $new"
            let count++
        fi
    done

      六、文件切片

      ${string:4}  打印第4个字符之后的内容

      ${string:4:8}  打印第5个字符开始,打印8个字符

      七、数组和关联数组

      赋值和初始化:

        array={[index1]=value1 [index2]=value2}

        array[index3]=value3

      

  • 相关阅读:
    0426-mysql插入语句大全
    JS节点操作
    模态框
    滚动监听 after选择器
    JS数组
    js函数 DOM操作
    JS循环 for while 全局/局部变量 短路
    JavaScript 基础 if switch 弹窗 运算符
    无序列表属性 隐藏方式 JS简介
    Css问题 margin float 文档流 背景图底部充满
  • 原文地址:https://www.cnblogs.com/pigerhan/p/2790701.html
Copyright © 2020-2023  润新知