hcc 于 2012-05-31 23:21:42发表:
自己用简单的实例测试先
sauntor 于 2012-05-30 23:28:58发表:
可以像下面这样运行上面的代码示例:[code] ./test_expansion.sh 一二三 SecondParameter [/code]
sauntor 于 2012-05-30 23:25:40发表:
现看下面的脚本:[code]# 文件名:test_expansion.sh #!/bin/bash filename=${0##*/} fileext=${0##*.} filebasename=${filename%.$fileext} echo "脚本的执行路径是 \"$0\"" echo "脚本的文件名是 \"$filename\"" echo "脚本的扩展名是 \"$fileext\"" echo "文件基本名称是 \"$filebasename\"" echo "第一个参数是 \"$1\"" echo "第一个参数的第3个字符是 \"${1:2:1}\"" echo "第一个参数第2个字符后的文字是 \"${1:1}\"" [/code]部分解释: [list=1] [*]${0##*/}代表截去$0变量(也就是当前执行命令)中/之前的所有字符,即:##代表在变量开始处截断,前面是被截变量名,后面是待截去的字符串模式 [*]${filename%.$fileext}代表截去$filename末尾的.$fileext(此处将展开为.sh),即:%代表在变量结尾处截断,前面是被截变量名,后面是待截去的字符串模式 [*]${1:1}代表从$1中下标为1(从0开始)的字符开始截取子串,即:${PARAM:OFFSET:LEN}代表从OFFSET下标处开始,在$PARAM变量中截取长度为LEN的子串,若省略:LEN则代表截到$PARAM结尾处 [*]##和#、%%和%的区别是,双字符的进行最大匹配,单字符进行最小匹配,例如:var1=avaliable, %%a*e会匹配aliable,但%a*e只会匹配able [/list] 希望对你有所帮助,如有疑问可详细参考bash 的 info手册 。
wonderful5115 于 2012-05-30 16:26:57发表:
这个不懂呀
halupipi 于 2012-05-30 15:08:53发表:
自己先顶起来
hcc 于 2012-05-31 23:21:42发表:
自己用简单的实例测试先
sauntor 于 2012-05-30 23:28:58发表:
可以像下面这样运行上面的代码示例:[code]
./test_expansion.sh 一二三 SecondParameter
[/code]
sauntor 于 2012-05-30 23:25:40发表:
现看下面的脚本:[code]# 文件名:test_expansion.sh
#!/bin/bash
filename=${0##*/}
fileext=${0##*.}
filebasename=${filename%.$fileext}
echo "脚本的执行路径是 \"$0\""
echo "脚本的文件名是 \"$filename\""
echo "脚本的扩展名是 \"$fileext\""
echo "文件基本名称是 \"$filebasename\""
echo "第一个参数是 \"$1\""
echo "第一个参数的第3个字符是 \"${1:2:1}\""
echo "第一个参数第2个字符后的文字是 \"${1:1}\""
[/code]部分解释:
[list=1]
[*]${0##*/}代表截去$0变量(也就是当前执行命令)中/之前的所有字符,即:##代表在变量开始处截断,前面是被截变量名,后面是待截去的字符串模式
[*]${filename%.$fileext}代表截去$filename末尾的.$fileext(此处将展开为.sh),即:%代表在变量结尾处截断,前面是被截变量名,后面是待截去的字符串模式
[*]${1:1}代表从$1中下标为1(从0开始)的字符开始截取子串,即:${PARAM:OFFSET:LEN}代表从OFFSET下标处开始,在$PARAM变量中截取长度为LEN的子串,若省略:LEN则代表截到$PARAM结尾处
[*]##和#、%%和%的区别是,双字符的进行最大匹配,单字符进行最小匹配,例如:var1=avaliable, %%a*e会匹配aliable,但%a*e只会匹配able
[/list]
希望对你有所帮助,如有疑问可详细参考bash 的 info手册 。
wonderful5115 于 2012-05-30 16:26:57发表:
这个不懂呀
halupipi 于 2012-05-30 15:08:53发表:
自己先顶起来