${filename}用法二:
假设:filename=/dir1/dir2/dir3/my.filename.txt
1.单一符号是最小匹配﹔两个符号是最大匹配。
${filename:0:5}:提取最左边的5个字节:/dir1 ${filename:5:5}:提取第5个字节右边的连续5个字节:/dir2
note:
${#var}可计算出变量值的长度:
${#filename}可得到27,因为/dir1/dir2/dir3/my.filename.txt刚好是31个字节
2.对变量值里的字串作替换:
${filename/dir/path}:将第一个dir提换为path:/path1/dir2/dir3/my.filename.txt ${filename//dir/path}:将全部dir提换为path:/path1/path2/path3/my.filename.txt
3.利用${ }还可针对不同的变数状态赋值(没设定、空值、非空值):
${filename-my.filename.txt}:假如$filename没有设定,则使用my.filename.txt作传回值。(空值及非空值时不作处理) ${filename:-my.filename.txt}:假如$filename没有设定或为空值,则使用my.filename.txt作传回值。(非空值时不作处理) ${filename+my.filename.txt}:假如$filename设为空值或非空值,均使用my.filename.txt作传回值。(没设定时不作处理) ${filename:+my.filename.txt}:若$filename为非空值,则使用my.filename.txt作传回值。(没设定及空值时不作处理) ${filename=my.filename.txt}:若$filename没设定,则使用my.filename.txt作传回值,同时将$filename赋值为my.filename.txt。(空值及非空值时不作处理) ${filename:=my.filename.txt}:若$filename没设定或为空值,则使用my.filename.txt作传回值,同时将$filename赋值为my.filename.txt。(非空值时不作处理) ${filename?my.filename.txt}:若$filename没设定,则将my.filename.txt输出至STDERR。(空值及非空值时不作处理) ${filename:?my.filename.txt}:若$filename没设定或为空值,则将my.filename.txt输出至STDERR。(非空值时不作处理)
大多数人都以为是才智成就了科学家,他们错了,是品格。---爱因斯坦