使用shell参数扩展,没有外部命令:
$ var=${PWD//[!\/]}
$ echo ${#var}
6
Run Code Online (Sandbox Code Playgroud)
第一个扩展删除所有不是的字符/; 第二个打印长度var.
有关POSIX shell或Bash支持的详细说明(括号中的链接转到POSIX标准或Bash手册中的相应部分):
$PWD包含当前工作目录的路径.(sh/Bash)${parameter/pattern/string}patternparameterstring
string为空,则后面的斜杠pattern是可选的(如我们的情况).[!\/]是一个括号表达式,代表"斜杠以外的任何字符".(sh/Bash)
\/或者被解释为结束模式.!如在括号表达式的第一个字符否定表达:任何字符其他比在表达的那些匹配的模式.POSIX sh需要支持,!并说使用的行为^是未定义的; Bash支持!和^.请注意,这不是正则表达式中所见的括号表达式,只有^有效.${#parameter}扩展到.的长度parameter.(sh/Bash)