在shell中截取心仪的字符串

file=/dir1/dir2/dir3/my.file.txt
${file#*/}  去掉左边
${file##*/} 去掉左边最后一个
${file%/*}  去掉右边
${file%%/*} 去掉右边第一个
${file:5:5} 截取5开始长度5的字符

${file/dir/path}  将第一个dir替换为path
${file//dir/path} 将所有dir替换为path

${file-my.file.txt}  未设置则返回my.file.txt,空和非空不处理
${file:-my.file.txt} 未设置和空值则返回my.file.txt,非空不处理
${file+my.file.txt}  空值或非空值则返回my.file.txt,未设置不处理
${file:+my.file.txt} 非空则返回my.file.txt,空值或未设置不处理
${file=my.file.txt}  未设置则返回my.file.txt且赋值file,空值或非空不处理
${file:=my.file.txt} 未设置或空值返回my.file.txt且赋值file,非空不处理
${file?my.file.txt}  未设置返回my.file.txt到STDERR,空值及非空值时不作处理
${file:?my.file.txt} 未设置或空值返回my.file.txt到STDERR,非空值时不作处理
注意: ":+"的情况是不包含空值的.":-", ":="等只要有冒号就是包含空值(null).
unset file可以将file变为未设置

${#file} 变量长度

A=(a b c def)
${A[@]} ${A[*]} 可得到全部数组
${A[n]} 可以得到第n个值,
${#A[@]} ${#A[*]} 得到数组长度
${#A[n]} 得到第n个值长度

captcha