Linuxshell中如何从路径名提取指定字符串?
这个不需要正则式效率差,难理解。使用两次shell 扩展就可以了。#!/bin/basha="$1"a="${a##*-}"#从开头删除到顺数最后一个减号。a="${a%\.*}"#从结尾删除到倒数第一个小数点。
echo "$a" 脚本保存为 a.sh执行命令 ./a.sh “/home/ lxy/hhhhh-a.bbb.cc.d”请把参数用引号括住。得到 a.bbb.cc说明:${parameter#pattern}和${parameter##pattern} 掐头,#是最小匹配,##是最大匹配,将变量从开头匹配pattern,最后扩展为原变量值去掉匹配的内容后的内容。
${parameter%pattern}和${parameter%%pattern} 去尾,%是最小匹配,%%是最大匹配,将变量从结尾匹配pattern,最后扩展为原变量值去掉匹配的内容后的内容。