shell脚本编程-特殊字符

Shell中除了普通字符外,还有很多具有特殊含义和功能的字符

1.通配符

* : 任意长度的字符串

? : 匹配任一单个字符

[]: 匹配其中的任意一个字符,例如:[abc]匹配a或b或c, 也可这样表示[a-z], 但 '-' [] 外只是一个普通字符, 和 在[]中也变成了普通字符.

 

2.引号

单引号' : 称为 强引用 或 全引用, 在'...' 中的所有字符都视作普通字符,包括($)(\)(`),但 '  不能出现在'...'中,否则shell无法判断单引号的起始位置.

双引号": 称为 弱引用 或 部分引用, 在"..."中除了($)(\)(`)保留其特殊用途外,其余字符都作为普通字符处理.

 

3.注释符

# : 以#开头的部分Shell解释器都会略过.但#!除外.

#!: 其后跟执行此脚本的可执行程序(解释器),而且#!必须在脚本的第一行.

 

4.大括号

在shell中{}用法很多,最常用的就是 引用变量原型 例如:${VAR}(这是推荐引用变量的方法)

大括号的变量扩展:

${VAR} 取出变量VAR的值
${VAR:-DEFAULT} 如果VAR没有定义,则以$DEFAULT作为其值
${VAR:=DEFAULT} 如果VAR没有定义,或者值为空,则以$DEFAULT作为其值
${VAR+VALUE} 如果定义了VAR,则值为$VALUE,否则为空字符串
${VAR:+VALUE} 如果定义了VAR并且不为空值,则值为$VALUE,否则为空字符串
${VAR?MSG} 如果VAR没有被定义,则打印$MSG
${VAR:?MSG} 如果VAR没有被定义或未赋值,则打印$MSG

${!PREFIX*}

${!PREFIX@}

匹配所有以PREFIX开头的变量
${#STR} 返回$STR的长度
${STR:POSITION} 从位置$POSITION处提取字串
${STR:POSITION:LENGTH} 从位置$POSITION处提取长度为$LENGTH的字串
${STR#SUBSTR} 从变量$STR的开头处开始寻找,删除最匹配$SUBSTR的字串
${STR##SUBSTR} 从变量$STR的开头处开始寻找,删除最匹配$SUBSTR的字串
${STR%SUBSTR} 从变量$STR的结尾处开始寻找,删除最匹配$SUBSTR的字串
${STR%%SUBSTR} 从变量$STR的结尾处开始寻找,删除最匹配$SUBSTR的字串
${STR/SUBSTR/REPLACE} 使用$REPLACE替换第一个匹配的$SUBSTR
${STR//SUBSTR/REPLACE} 使用$REPLACE替换所有匹配的$SUBSTR
${STR/#SUBSTR/REPLACE} 如果$STR以$SUBSTR开始,则用$REPLACE来代替匹配到的$SUBSTR
${STR/%SUBSTR/REPLACE} 如果$STR以$SUBSTR结束,则用$REPLACE来代替匹配到的$SUBSTR

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.通配符扩展: (匹配多个排列组合的可能)

比如坐标:{x1,x2,x3}{y1,y2,y3}

# echo {x1,x2,x3}{y1,y2,y3}
x1y1 x1y2 x1y3 x2y1 x2y2 x2y3 x3y1 x3y2 x3y3

比如文件名:

# touch file_{1,2}
# ls file_{1,2}
file_1  file_2

 

6.语句块

大括号还用于构造语句块,语句之间使用回车隔开

 

7.控制字符(即Ctrl+KEY组合键一起使用,用于修改终端或文本显示,【控制字符不能再脚本中使用,只能与shell进行交互使用】)

如表:

Ctrl+B 退格但是不删除掉前面的字符
Ctrl+C 终结当前前台作业
Ctrl+D 结束符,可用于退出当前Shell或结束当前输入
Ctrl+G 系统输出一声鸣叫
Ctrl+H 退格且删掉前面的字符
Ctrl+L 清屏,和clear效果一样
Ctrl+I 水平制表符
Ctrl+K 垂直制表符
Ctrl+J 另起一行
Ctrl+M 回车
Ctrl+Z 暂停前台作业
Ctrl+V 在vim中操作Visual Block
Ctrl+U 删除光标到行首的所有字符

 

 

 

 

 

 

 

 

 

 

 

 

 

8.其他

  1. 反引号 `: 命令替换,和$()的作用相同,表示返回当前命令的执行结果并赋值给变量
  2. 位置参数:
    1. $0:脚本名本身
    2. $1、$2...${10}:脚本的第一个参数、第二个参数....第十个参数
    3. $#:变量总数.
    4. $*、$@:显示所有的参数.
    5. $?:前一个命令的退出的返回值.
    6. $!:最后一个后台进程的ID号.
  3. 感叹号:通常为逻辑反,也可用于执行history中某个命令:例如:!100【为hsitory中行号为100的命令】

 

posted @ 2015-09-22 16:13  超超xc  Views(503)  Comments(0Edit  收藏  举报
I suppose,were childrenonec.