使用${}
${}用于字符串的读取,提取和替换功能,可以使用${} 提取字符串 1、提取文件名 # var=/dir1/dir2/file.txt # echo ${var##*/} file.txt 2、提取后缀 # var=/dir1/dir2/file.txt # echo ${var##*.} txt 3、提取不带后缀的文件名,分两步 # var=/dir1/dir2/file.txt # tmp=${var##*/} # echo $tmp file.txt # echo ${tmp%.*} file 5、提取目录 # var=/dir1/dir2/file.txt # echo ${var%/*} /dir1/dir2 6、 # var=/dir1/dir2/file.txt # echo ${var%%.*} /dir1/dir2/file 7、 # var=/dir1/dir2/file.tar.gz # echo ${var#*.} tar.gz 8、${}总结 ${}的使用是变量的提取和替换等操作; #:表示从左边算起第一个 %:表示从右边算起第一个 ##:表示从左边算起最后一个 %%:表示从右边算起最后一个 换句话来说,#总是表示左边算起,%总是表示右边算起。 *:表示要删除的内容,对于#和##的情况,它位于指定字符(例子中的'/'和'.')的左边,表于删除指定字符及其左边的内容;对于%和%%的情况,它位于指定字符(例子中的'/'和'.')的右边,表示删除指定字符及其右边的内容。这里的'*'的位置不能互换,即不能把*号放在#或##的右边,反之亦然。
使用文件目录的专有命令basename和dirname
1、提取文件名,注意:basename是一个命令,使用$(), 而不是${} # var=/dir1/dir2/file.txt # echo $(basename $var) file.txt 2、提取不带后缀的文件名 # var=/dir1/dir2/file.txt # echo $(basename $var .txt) file 3、提取目录 # var=/dir1/dir2/file.txt # dirname $var /dir1/dir2 # echo $(dirname $var) /dir1/dir2 # dir=/dir1/dir2/ # dirname $dir /dir1
转载于:https://blog.51cto.com/moerjinrong/1969754