本帖最后由 qyihan 于 2013-12-4 10:16 编辑
发一个知识点,活跃一下linux板块。
以下内容部分是翻译得来,经过我的修改和总结:
shell脚本编程中的一些字符串的处理技巧:
(1)、${value:-word}:如果变量value没有定义或者是空字符串,则返回word,否则返回value;
(2)、${value:=word}:如果变量value没有定义或者是空字符串,则返回word,并且把word复制给value,否则返回value;
(3)、${value:%message}:如果value不是一个空字符串,那就什么也不做。否则,message会被发送到标准错误输出,并且程序会退出;
(4)、${value:+word}:如果value不是一个空字符串,返回值将会是word。
(5)、${value:offset}和${value:offset:length}:从变量value获得子串,offset为偏移量,length为要获得子串的长度;
(6)、${#value}:获得变量value的字符个数;
(7)、${value#pattern}和${value##pattern}:去掉value开头与pattern匹配的部分。
(8)、${value%pattern}和${value%%pattern}:和上面的一样,但是它的匹配在尾部。
(9)、${value/pattern/string}和${value//pattern/string}:在变量value中,用string替换掉和pattern匹配的部分,这个替换不会改变原来value的值;
(10)、${value%.*}和${value%%.*}:删除value字符串中以分隔符“.”匹配的右边字符,保留左边字符,"*"为通配符,"."为分隔符,可以为多个字符;
(11)、${value#*.}和${value##*.}:删除value字符串中以分隔符“.”匹配的左边字符,保留右边字符;
(注1:#,%,/ 都是最短匹配,而##,%%,// 都是贪婪匹配,匹配最长,在用到通配符时,这个比较有用)。
(注2:word可以为字符串,也可以为变量,若为变量,前面要加$)。
(那个笑脸是冒号和一个字母o)
附加两个linux使用中提高效率的小小技巧:
(1)、在输入命令时,遇到长命令想要去行首或者行尾,避免频繁移动光标的快捷键:Ctrl+a(回到行首),Ctrl+e(回到行尾);
(2)、在vi编辑器中,命令行模式中,gg回到首行的开头,G回到尾行的开头。
|