shell 小技巧

来源:互联网 发布:手机淘宝怎么注册登录 编辑:程序博客网 时间:2024/04/27 19:15


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/basha=/dir1/dir2/dir3/my.file.txtecho ${a:0:3} #打印前三个字符echo ${a:${#a}-3:3} #打印后三个字符 


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

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

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


10.给多个变量循环赋值

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

11. 用shell控制mysql

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





原创粉丝点击