shell 小技巧

    技术2022-05-20  52

    1.清空文件内容(也有touch的功能)

    :>data >data #注:这里不适用管道,符号链接,和某些特殊文件

    2.检测命令行参数

    case "$1" in "" ) data=100;; *[!0-9]*) echo "Usage: `basename $0`"; exit 1;; * ) data=$1;; esac

    3.在README的第一行加上#!/bin/more,让它具有可执行权限,结果是将文档自动列出自己的内容。

     

    4.echo对于打印单行消息是非常好的,如果想打印消息块的话,可以用cat here document。

     

    5.数制转换

    echo $(( 2#101011 ))

     

    6.匿名代码块中的变量,对于脚本其他部分的代码是可见的。

    a=123 { a=321 } echo "a = $a" #a=321

    7.关于历史命令的调用

          !!    前一条命令;   !:0    不带参数的前一条命令名;   !^    前一条命令的第一个参数;   !:n    前一条命令的第n个参数;   !$     前一条命令的最后一个参数;   !*     前一条命令的所有参数,命令名除外;   !n     第n条命令;   !-n    倒数第n条命令;   !str    最近一条以str开头的命令;   !?str    最近一条包含str的命令;   ^a^b  将上一条命令名中的a替换为b;   !:gs/a/b 将上一条命令的所有a替换为b(包含命令名和参数)。

    8.关于${a:b:c}的用法

    #!/bin/bash a=/dir1/dir2/dir3/my.file.txt echo ${a:0:3} #打印前三个字符 echo ${a:${#a}-3:3} #打印后三个字符

    9.${a-b} (${a:-b})和${a=b} (${a:=b})的区别

    啥都不说了,看执行结果什么都明白了

    #!/bin/bash b= echo '${b-acefei} = '${b-acefei} echo '${b:-acefei} = '${b:-acefei} echo '$b = '$b b= echo '${b=acefei} = '${b=acefei} echo '${b:=acefei} = '${b:=acefei} echo '$b = '$b

    10.给多个变量循环赋值

    #!/bin/bash var=(var1 var2 var3) char="a b c" i=0 for loop in $(echo $char) do eval "${var[i]}=$loop" ((i++)) done echo $var1 echo $var2 echo $var3

    11. 用shell控制mysql

    mysql -uroot -D 'DATABASENAME' -e 'select * from TABLE'


    最新回复(0)