我在使用
#
获取 bash 中纯字符串的长度时遇到问题(该运算符有通用名称吗?参考手册将其称为特殊参数,但有很多这样的参数)。更具体地说,我想获取以 :
作为分隔符的路径的长度。
我按照
手册中的
${#parameter}
语法尝试了一些方法,但它们都返回错误。
length=${#":/path/to/a/directory"} # "bad substitution"
length=${#':/path/to/a/directory'} # "bad substitution"
length=${#:/path/to/a/directory} # "syntax error: operand expected (error token is "/path/to/a/directory")"
# Removing the `:`
length=${#"/path/to/a/directory"} # "bad substitution"
length=${#'/path/to/a/directory'} # "bad substitution"
length=${#/path/to/a/directory} # `length` is set to 0
显然,使用变量是可行的。
var=":/path/to/a/directory"
length=${#var} # `length` is correctly set to 21
很明显,
bash
不支持在文字字符串上使用#
,但是是否有使用变量的解决方法?
但是可以有使用变量的解决方法吗?
不,没有解决方法。任何 variable 扩展,例如
${#
都适用于 variables,而不是字符串。