shell脚本应用及循环语句

一.bash通配符:
  1. ?//任意的单个字符
  2.*//0个或多个字符
  3. []      //区间内的任意一个字符
  4.;      //分割命令,忽略前一个命令的执行结果,继续执行后面的命令
  5.&      //后台执行程序
  6.&&      //前面的命令执行成功,返回值是0,执行后面的命令。
  7.||      //前面的命令执行失败,返回值非0,执行后面的命令。
  8. |      //管道
  9.()      //开启子shell,执行里面的命令
  10.{}      //里面的命令在当前shell执行
  11.> >>    //输出重定向
  12.< <<    //输入重定向
  13.$        //定义变量
  14.\        //转义;命令的折行
  15.“      //调用命令的执行结果;不可以嵌套
  16 .-        //连字符;命令的选项的前导, – —
  17. ” //强引用符号;屏蔽特殊字符
      18.””      //弱引用符号;“ $ \ 这3个符号屏蔽不了
      19.: //表示空操作,返回值永远是0;while循环
      20. [:alnum:]//字母+数字
      21[:alpha:] //字母
      22[:lower:]//小写字母
      23[:upper:] //大写字母
      24[:digit:] //十进制数
      25 [:punct:] //符号
      26 [:space:]//空白字符(空格 “tab”)
      27 [[:alnum:]] //任意的一个字母或数字[a-Z0-9]
      28 [^[:alnum:]] //取反
          [[:alnum:]!]

相关阅读:

Shell 循环语句用法小结 http://www.linuxidc.com/Linux/2012-02/54474.htm

Linux下Shell编程——awk编程 http://www.linuxidc.com/Linux/2013-06/85527.htm

Linux下Shell编程——sed命令基本用法 http://www.linuxidc.com/Linux/2013-06/85526.htm

Linux下Shell编程——grep命令的基本运用 http://www.linuxidc.com/Linux/2013-06/85525.htm

Linux下Shell编程——正则表达式基础与扩展 http://www.linuxidc.com/Linux/2013-06/85523.htm

二. 变量
1.注意
(1)=的两边千万不要有空格
(2)不要使用$作为变量的名字
(3)变量名的长度--256个字符,区分大小写
2.如何引用
(1)直接引用:
echo  命令
-e :启用\(反斜线)控制字符(\t \n)的转换
-n :取消换行符
[root@tx1 ~]# echo “123\t234”
123\t234
[root@tx1 ~]# echo -e “123\t234”
123    234
[root@tx1 ~]# echo -e “123\n234”
123
234
[root@tx1 ~]# echo -n “123\t234”
123\t234[root@tx1 ~]#
(2)间接引用
[root@tx1 ~]# a=b
[root@tx1 ~]# b=c
[root@tx1 ~]# echo $a
b
[root@tx1 ~]# echo ${!a}
c
(3)变量的作用域
@1在当前的shell里,定义的变量叫做本地变量-局部变量。
@2全局变量-环境变量,export 把局部变量变成全局变量。只作用于子shell。
[root@tx1 ~]# x=123
[root@tx1 ~]# echo $x
123
[root@tx1 ~]# bash
[root@tx1 ~]# echo $x

[root@tx1 ~]# exit
exit
[root@tx1 ~]# export x
[root@tx1 ~]# bash
[root@tx1 ~]# echo $x
123

(4)查看定义的变量
@1.set 查看所有的变量
@2.env 查看全局变量
@3.unset  取消变量 unset+变量名
@4.设置变量为只读: readonly+变量名

(5)位置参数$
注:位置参数,从命令行传递给脚本,或者是传递给函数.或者赋职给一个变量.
$0 命令本身
$1 $2 …… ${10}
$# 参数的个数
$* 所有的参数

$@ 所有的参数(需要被” ” 引用)
$$ 上一条命令的进程号
$? 上一条命令的返回结果
$_ 上一条命令的最后一个参数
$! 最后一个进入后台的命令的进程号
$() 等同于“
$(()) 等同于$[] 做数学运算的,但是只能算整数
(6)变量的置换
注:用来执行匹配或者是判断变量是否存在。
@1.${变量名:-字符串}:如果变量是空的,那么就返回字符串;否则返回变量的值
@2.${变量名:+字符串}:如果变量有值,那么使用字符串替换变量;否则返回空值
@3.${变量名:=字符串}:如果变量没有值,那么就把字符串赋值给变量;否则返回变量的值

@4.${变量名:?提示信息}:如果变量没有值,那么返回提示信息
@1.
[root@tx1 ~]# echo $a
[root@tx1 ~]# echo ${a:-123}
123
[root@tx1 ~]# b=abc
[root@tx1 ~]# echo ${b:-123}
Abc

@2.
[root@tx1 ~]# echo ${a:+123}
[root@tx1 ~]# echo ${b:+123}
123

@3.
[root@tx1 ~]# echo $a
[root@tx1 ~]# echo $b
abc
[root@tx1 ~]# echo ${a:=123}
123
[root@tx1 ~]# echo $a
123
[root@tx1 ~]# echo ${b:=123}
abc
[root@tx1 ~]# echo $b
Abc

@4.
[root@tx1 ~]# unset a
[root@tx1 ~]# echo ${a:?}
bash: a: parameter null or not set
[root@tx1 ~]# echo ${a:?没有设置变量}
bash: a: 没有设置变量
(7)变量的匹配模式
#:从变量的值的头部开始最小匹配,然后删除
## :从变量的值的头部开始最大匹配,然后删除
%  :从变量的值的尾部开始最小匹配,然后删除
%% :从变量的值的尾部开始最大匹配,然后删除
:num1:num2 :截取变量的值,num1是开始的位置,num2是截取出来几位;0是第一个字符
@1.
[root@tx1 ~]# echo ${pth#*/}
usr/bin/local/bin/all
[root@tx1 ~]# echo ${pth##*/}
all
@2.
[root@tx1 ~]# echo ${pth%/*}
/usr/bin/local/bin
[root@tx1 ~]# echo ${pth%%/*}

[root@tx1 ~]#
@3.
[root@tx1 ~]# echo ${pth:0:6}
/usr/b
[root

Tags: