我知道这对你们中的一些人来说听起来很傻,但我对正则表达式的解决方案并不擅长。我在其他人编写的函数中遇到了以下表达式,无法弄清楚他/她在做什么。
REGEX 1
[ ! -d ${2%/*}/ ]
REGEX 2
cmp -s $2 ${2##*/}
正如您所猜测的,这些正则表达式评估正在脚本中使用,进行文件更新并移动它们。我想知道
的含义${2%/*}/
和
${2##*/}
答案 0 :(得分:4)
让我们举一个例子来更好地理解:
s='abc/def/foo'
echo "${s%/*}/"
abc/def/
echo "${s##*/}"
foo
/
之后丢弃文本。/
之前的所有文本。您可以在man bash
中看到更多详情:
##*/
用于匹配输入字符串开头/
之前的最长字符串。%/*
用于匹配输入结束后/
之后的文字。