basename和dirname 在脚本中的作用
请看下面这个脚本的作用。 程序本身中并没有写死任何路径,但是却可以获取到dirname。
PROG_NAME="$(basename $0)" PROG_DIR="$(cd $(dirname $0) && pwd)"
basename和dirname的局限
basename命令会返回不包含路径的脚本名。
dirname,获取文件所在目录
dirname /etc/ # 对目录使用dirname获取的是上级目录
dirname /kalsldk/kdkskks/djfjdjdjsj # 获取不存在的目录
shell提供的basename和dirname,难免有些限制,我们可以使用${}来灵活获取,而且${}可以用来做shell的字符子串提取。
- ${var##*/}
- ${##*.}
- ${var#*.}
- ${var%/*}
- ${var%%.*}
对${}的总结
#代表左起,%代表右起
两个符号代表最后一个字符,一个符号代表第一个字符
- #:左起第一个
- ##: 左起最后一个
- %:右起第一个
- %%:右起最后一个