shell学习
字符的处理:
1.计算字符串长度
echo“$str”|awk‘{printlength($0)}’
exprlength“$str”
echo“$str”|wc-c
2.判断字符串是否为空
if["$str"=""]
if[x"$str"=x]
if[-z"$str"]
3
${file#*/}:拿掉第一條/及其左邊的字串:dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最後一條/及其左邊的字串:my.file.txt
${file#*.}:拿掉第一個.及其左邊的字串:file.txt
${file##*.}:拿掉最後一個.及其左邊的字串:txt
${file%/*}:拿掉最後條/及其右邊的字串:/dir1/dir2/dir3
${file%%/*}:拿掉第一條/及其右邊的字串:(空值)
${file%.*}:拿掉最後一個.及其右邊的字串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一個.及其右邊的字串:/dir1/dir2/dir3/my
記憶的方法為:
#是去掉左邊(在鑑盤上#在$之左邊)
%是去掉右邊(在鑑盤上%在$之右邊)
單一符號是最小匹配﹔兩個符號是最大匹配
正则表达式式:
http://hi.baidu.com/nxswxxg/blog/item/b96fddd1907856db562c8423.html
#!/bin/bash
#liaolj测试
#n=1
#:$((n++))
#echo$n
#区别按位反与按位非的区别
#n=1
#letn=$((~n))
#echo"按位反:"$n#-2
#letn=$((!n))
#echo"按位非:"$n#0
#进制
#其他进制:BASE#NUMBERBASE(2-64之间)
#letn="32#77"
#echo$n#231
#let"b64=4#@_"
#echo$b64
#求字符串长度
#liaolj=ynwuupl
#echo${#liaolj}
#echo`exprlength$liaolj`
#echo`expr"$liaolj":'.*'`
#匹配字符串开头的子串长度
#exprmatch"$string"'$substring'substring是一个正则表达式
#expr"$string":'$substring'单引号和双引号是一样的
#liaolj=ynwuupl
#echo`exprmatch"$liaolj"".*"`
#echo`expr"$liaolj":'.*'`
#索引
#exprindex$string$substring
#在字符串$string中所匹配到的$substring第一次出现的位置
#liaolj=ynwuupl
#echo`exprindex"$liaolj"uu`
#echo`exprindex$liaoljuu`#没有引号也是可以的
#提取子串
#${string:position}
#在string中从位置$position开始提取子串
#如果string是"*"或者"@",那么将会提取从位置position开始的位置参数
#${string:position:length}
#在string中从位置position开始提取length长度的子串
#liaolj=ynwuupl
#echo${liaolj:3}#uupl
#echo${liaolj:3:2}#uu
#echo${liaolj:-3}#ynwuupl
#echo${liaolj:-3}#upl
#echo${liaolj:(-3)}#upl
#echo${*:0}#显示第0个参数后面的所有参数
#
#exprsubstr$string$position$length
#liaolj=ynwuupl
#exprsubstr$liaolj35#length参数必须有
#
#exprmatch"$string"'\($substring\)'
#expr"$string":'\($substring\)'
#liaolj=ynwuupl
#exprmatch$liaolj'\(...[uU].\)'#ynwuu
#
#exprmatch"$string"'.*\($substring\)'
#expr"$string":'.*\($substring\)'
#从string的结尾提取substring,substring是正则表达式
#子串削除
#${string#substring}
#从string的开头位置截掉最短匹配的substring
#${string##substring}
#从string的开头位置截掉最长匹配的substring
#liaolj=abcABC123ABCabc
#echo${liaolj#a*C}#123ABCabc
#echo${liaolj##a*C}#abc
#
#${string%substring}
#从string的结尾位置截掉最短匹配的substring
#${string%%substring}
#从string的结尾位置截掉最长匹配的substring
#liaolj=abcABC123ABCabc
#echo${liaolj%b*c}#abcABC123ABCa
#echo${liaolj%%b*c}#a
#子串替换
#{string/substring/replacement}
#使用replacement来替换第一个匹配的substring
#{string//substring/replacement}
#使用replacement来替换所有匹配的substring
#liaolj=ynwuupl
#echo${liaolj/u/p}#ynwupupl
#echo${liaolj//u/p}#ynwupppl
#
#${string/#substring/replacement}
#如果substring匹配string的开头号部分,那么就用replacement来替换substring的开头部分
#{string/%substring/replacement}
#如果substring匹配string的结尾部分,那么就用replacement来替换substring的结尾部分
#使用awk来处理字符串
#bash脚本也可以调用awk的字符串操作功能来代替它自已的内置功能
#参数替换
#${parameter}
#${parameter-default},${parameter:-default}
#echo${1-liaolj}#liaolj
#echo$1#liaolj
#
#{parameter=default},${parameter:=default}
#如果变量parameter没声明,那么就用default的值
#echo${username=`liaolj`}#报错``其中放得是命令
#echo${1=`liaolj`}#报错
#echo${username=liaolj}#liaolj
#echo${a:=liaolj}
#${parameter+alt_value},${parameter:+alt_value}
#如果parameter被声明就用alt_value,否则就用null
#遝cho${1+ynw}#如果传参时为ynw,否则为nul
#
#${parameter?err_msg},${parameter:?err_msg}
#如果parameter已声就用原来的值,如果没有声明,打印错误信息
#echo${1?error:你好懒!}
#:${1?"Usage:$0ARGUMENT"}
#进制之间转换
#echo'obase=2;ibase=10;255'|bc
#echo;echo"Hitakey,thenhitreturn."
#readKeypress
#case"$Keypress"in
#[[:lower:]])echo"Lowercaseletter";;
#[[:upper:]])echo"Uppercaseletter";;
#[0-9])echo"Digit";;
#*)echo"Punctuation,whitespace,orother";;
#esac#允许字符串的范围出现在[中括
#a=`echo"HELLO"|trA-Za-z`
#echo$a
#a=`echo"ynwuupl"|tr-du`
#echo$a
#echo-n"Thisstringsplits
#17ontwolines."
baseName=app
today=`date+%y%m%d`
echo${baseName}${today}.img
echoappp
grep命令:http://fanqiang.chinaunix.net/system/linux/2007-03-15/5110.shtml