1,获取当前位置的上一级目录的全路径
]# pathname=/henan/test01/b
]# echo $(dirname $pathname)
/henan/test01
]# echo ${pathname%/*}
/henan/test01
]# a=/henan/
]# echo $(dirname $a)
/
]# echo ${a%/*}
/henan
]# a=/henan/test01/b
]# dirname $a
/henan/test01
遵循从最左边最大匹配原则,来获取文件名称
]# a=/henan/test01/b/ljxc_case_annex.service
]# echo $a
/henan/test01/b/ljxc_case_annex.service
]# echo ${a##*/} ******最大匹配原则,来获取全路径下的文件名称
ljxc_case_annex.service
]# a=/henan/test01/b/file.tar.gz
]# echo $a
/henan/test01/b/file.tar.gz
]# echo ${a##*.} ******截取最大匹配,获得gz
gz
]# echo ${a#*.} ******截取最小匹配,获得tar.gz
tar.gz
遵循从最右边匹配原则,来获取文件名称(或目录全路径)
%(最小匹配)
]# echo $a
/henan/test01/b/file.tar.gz
]# echo ${a%/*}
/henan/test01/b
]# echo ${a%/b*}
/henan/test01
%%(最大匹配)
]# echo ${a%%.*}
/henan/test01/b/file
basename
获取全路径下的文件名称
]# echo $a
/henan/test01/b/file.tar.gz
]# echo $(basename $a)
file.tar.gz
]# echo $(basename $a .gz)
file.tar
变量扩展
${var%pattern} 去掉最小匹配的后缀 echo ${PWD%/*} 显示当前的父目录路径
${var%%pattern} 去掉最大匹配的后缀
${var#pattern} 去掉最小匹配的前缀
${var##pattern} 去掉最大匹配的前缀 echo ${PWD##*/} 显示当前目录名称
${#var} 打印变量字符个数
```bash
]# a=12121
]# echo ${#a}
5
变量替换
${var:-word} 如果变量var已经设置且非空,结果为var的值,否则结果为word
${var:=word} 如果变量var已经设置且非空,结果为var的值,否则设置var为word
]# a=12121
]# echo ${a:-word}
12121
]# echo ${a:-henan}
henan
]# a=
]# echo ${a:-henan}
henan
如果a值为空,即将值赋值为a
]# echo $a
]# echo ${a:=henan}
henan
]# echo $a
henan