1、文件类型介绍 linux系统中主要包括以下七种文件类型: d 目录 - 普通文件 l 符号链接 s 套接字文件 b 块设备文件 c 字符设备文件 p 命名管道文件
2、正则表达式 正则表达式在shell编程中非常重要。
从一个文件或命令输出中抽取或过滤文本时。可使用正则表达式(RE),正则表达式是一些特殊或不很特殊的字符串模式的集合。
基本的元字符集: ^ 只匹配行首。 $ 只匹配行尾。 * 一个单字符后紧跟*,匹配0个或多个此单字符。 [] 匹配[]内字符,可以是一个单字符,也可以是字符序列。可以使用-来表示[]内范围,如[1-5]等价于[1,2,3,4,5]。 屏蔽一个元字符的特殊含义,如$表示字符$,而不表示匹配行尾。 . 匹配任意单字符。 pattern{n} 匹配pattern出现的次数n pattern{n,}m匹配pattern出现的次数,但表示次数最少为n pattern{n,m} 匹配pattern出现的次数在n与m之间(n,m为0-255)
常见例子: 显示可执行的文件:ls –l | grep …x...x..x 只显示文件夹:ls –l | grep ^d 匹配所有的空行:^$ 匹配所有的单词:[A-Z a-z]* 匹配任一非字母型字符:[^A-Z a-z] 包含八个字符的行:^……..$(8个.)
更多内容,请查阅正则表达式的详细资料加深学习。
3、字符类描述 常用的可用字符类列表: [:alnum:] 字母数字 [a-z A-Z 0-9] [:alpha:] 字母 [a-z A-Z] [:blank:] 空格或制表键 [:cntrl:] 任何控制字符 [:digit:] 数字 [0-9] [:graph:] 任何可视字符(无空格) [:lower:] 小写 [a-z] [:print:] 非控制字符 [:punct:] 标点字符 [:space:] 空格 [:upper:] 大写 [A-Z] [:xdigit:] 十六进制数字 [0-9 a-f A-F]
使用字符类可以更好地适应非英语 locale(包括某些必需的重音字符等)。
4、引号类型 shell中共有四种引用类型: “ ”双引号 ‘ '单引号 ` ` 反引号 反斜线
说明: “ ”可引用除$、` 、 、外的任意字符或字符串,“ ”中的变量能够正常显示变量值。 ‘ '与“ ”类似,不同在于shell会忽略任何的引用值。 例如: GIRL=‘girl' echo “The ‘$GIRL' did well” 则打印:The ‘girl' did well
说明: ` `用于设置系统命令的输出到变量,shell会将` `中的内容作为一个系统命令并执行质。 例如:echo `date` 则打印当前的系统时间。
说明: 用来屏蔽特殊含义的字符:& * + ^ $ ` “ | ? 例如:expr 12 * 12 将输出144
5、变量设置的几种模式 变量设置时的不同模式: valiable_name=value 设置实际值到 variable_name中 valiable_name+value 如果设置了variable_name,则重设其值 valiable_name:?value 如果未设置variable_name,则先显示未定义用户错误信息 valiable_name?value 如果未设置variable_name,则显示系统错误信息 valiable_name:=value 如果未设置variable_name,则设置其值 valiable_name-value 同上,但取值并不设置到variable_name
注:以上几种模式的灵活应用,将在很大程度上提升编程技巧。
6、条件测试 test命令用于测试字符串、文件状态和数字,expr测试和执行数值输出。 Test格式:test condition 或 [ condition ](需要特别注意的是condition的两边都要有一个空格,否则会报错),test命令返回0表示成功。 下面将分别描述test的三种测试: 文件状态测试(常用的) -d 测试是否文件夹 -f 测试是否一般文件 -L 测试是否链接文件 -r 测试文件是否可读 -w 测试文件是否可写 -x 测试文件是否可执行 -s 测试文件是否非空
1、字符串测试 五种格式: test “string” test string_operator “string” test “string” string_operator “string” [ string_operator “string” ] [ “string” string_operator “string” ] 其中string_operator可以为: = 两字符串相等 != 两字符串不等 -z 空串 -n 非空串
2、数值测试 两种格式: “number” number_operator “number” [ “number” number_operator “number” ] 其中:number_operator 可以为:-eq 、-ne、-gt、-lt、-ge
例如: NUMBER=130 [ “990” –le “995” –a “NUMBER” -gt “133” ] (其中-a表示前后结果相“与”)
expr命令一般用于整数值,但也可以用于字符串。 格式: expr srgument operator operator argument 例如: expr 10 + 10 expr 10 ^ 2 (10的平方) expr $value + 10
增量计数--expr在循环中最基本的用法 例如: LOOP=0 LOOP=`expr $LOOP + 1`
3、模式匹配:通过指定的冒号选项计算字符串中的字符数 例如: value=account.doc expr $value : `(.*).doc` 输出 account
7、命令执行顺序
&& 成功执行一个命令后再执行下一个 || 一个命令执行失败后再执行另一个命令 ( ) 在当前shell中执行一组命令(格式:(命令1;命令2; ……)) { } 同( ) 例如: comet mouth_end || ( echo “hello” | mail dave ;exit ) 如果没有( ),则shell将直接执行最后一个命令(exit)
在shell编程中,命令执行顺序,有时决定了一个程序的执行结果,而&&与||应用最为广泛。
8、脚本调试 脚本调试 最有用的调试脚本的工具是echo命令,可以随时打印有关变量或操作的信息,以帮助定位错误。 也可使用打印最后状态($?) 命令来判断命令是否成功,这时要注意的是要在执行完要测试的命令后立即
输出$?,否则$?将会改变。
Set命令也可以用来辅助脚本测试: Set –n 读命令但是不执行 Set –v 显示读取的所有的行 Set –x 显示所有的命令及其参数 要关闭set选项,只要把-换成+就可以了。 |
请发表评论