标签:des style blog color os 使用 ar strong 文件
正则强引用问题 1 sed -e ‘/^$/d‘ $filename 2 # -e选项, 将会使得后边的字符被看作为编辑指令. (如果只给"sed"传递了单个指令, 那么"-e"是可选的.) 4 # "强"引用(‘‘)将会保护指令中的RE(正则表达式)字符串, 也就是防止脚本将RE重新解释为特殊字符. (这会为sed命令, 保存指令的RE表达式.) 在某些特定的情况下, sed编辑命令将不会和单引号的强引用一起工作. 1 filename=file1.txt 2 pattern=BEGIN 3 4 sed "/^$pattern/d" "$filename" # 工作正常. 5 # sed ‘/^$pattern/d‘ "$filename" 就会出现异常的结果. 在这个实例中, 被强引用(‘ ... ‘)引起的 "$pattern"就不会扩展为"BEGIN". sed -n ‘/xzy/p‘ $filename # -n选项会让sed只打印那些匹配模式的行. 反斜线将会强制sed替换命令延续到下一行. 类似于, 在第一行的结尾使用换行作为替换字符串. 1 s/^ */ 2 /g 这将每行开头的空格用换行来替换. 最后的结果就是将每段的缩进替换为一个空行。
通常,真个表达式需要用单引号括起来,阻止特殊字符被解释,而通配符不能用引号。 单引号中的所有字符包括\都没有特殊意义。如果想在一对单引号中显示一个单引号是不行的
在一个双引号中通过直接使用变量名的方法来引用变量, 一般情况下都是没问题的. 这么做将阻止所有在引号中的特殊字符被重新解释 -- 包括变量名 [1]-- 但是$,`(后置引用), 和\(转义符)除外。使用双引号还能够阻止单词分割(word splitting). [3]如果一个参数被双引号扩起来的话, 那么这个参数将认为是一个单元, 即使这个参数包含有空白, 那里面的单词也不会被分隔开。
在echo语句中, 只有在单词分割(word splitting)或者需要保留空白的时候, 才需要把参数用双引号括起来.
使用-e选项的‘echo‘命令来打印转义符. echo -e "\v\v\v\v" # 打印4个垂直制表符.
如果使用$‘\X‘结构,那-e选项就不必要了. echo $‘\t \042 \t‘ # 被水平制表符括起来的引号(").
variable2="" # Empty.
COMMAND $variable2 $variable2 $variable2 # COMMAND将不带参数执行.
COMMAND "$variable2" "$variable2" "$variable2" # COMMAND将以3个空参数来执行.
COMMAND "$variable2 $variable2 $variable2" # COMMAND将以1个参数来执行(2空格)
file_list="/bin/cat /bin/gzip /bin/more /usr/bin/less /usr/bin/emacs-20.7" # 列出的文件都作为命令的参数
ls -l /usr/X11R6/bin/xsetroot /sbin/dump $file_list # 加两个文件到参数列表中, 列出所有的文件信息.
(cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xpvf -)
每个命令都会返回一个 退出状态码 (有时候也被称为 返回状态 ). 成功的命令返回0, 而不成功的命令返回非零值, 非零值通常都被解释成一个错误码,虽然偶尔也会有例外。exit nnn命令将会把 nnn退出码传递给shell( nnn必须是十进制数, 范围必须是0- 255)。
(( ... ))和let ...结构也能够返回退出状态码, 当它们所测试的算术表达式的结果为非零的时候, 将会返回退出状态码0. 这些算术扩展结构被用来做算术比较.
在[[和]]之间所有的字符都不会发生文件名扩展或者单词分割, 但是会发生参数扩展和命令替换. 使用[[ ... ]]条件判断结构, 而不是[ ... ], 能够防止脚本中的许多逻辑错误. 比如,&&, ||, <, 和>操作符能够正常存在于[[ ]]条件判断结构中, 但是如果出现在[ ]结构中的话, 会报错.
"if COMMAND"结构将会返回COMMAND的退出状态码. 与此相似, 在中括号中的条件判断也不一定非得要if不可, 也可以使用列表结构.
[ "$var1" -ne "$var2" ] && echo "$var1 is not equal to $var2"
home=/home/bozo
[ -d "$home" ] || echo "$home directory does not exist."
(( ))结构扩展并计算一个算术表达式的值. 如果表达式的结果为0, 那么返回的退出状态码为1, 或者是"假". 而一个非零值的表达式所返回的退出状态码将为0, 或者是"true". 这种情况和先前所讨论的test命令和[ ]结构的行为正好相反。
当-n使用在中括号中进行条件测试的时候, 必须要把字符串用双引号引用起来,习惯于使用引用的测试字符串才是正路。
标签:des style blog color os 使用 ar strong 文件
原文地址:http://www.cnblogs.com/fly-xiang-zhao/p/3972840.html