# bash 中的运算符获取字符串文字的长度

问题描述 投票:0回答:1

我在使用

#
获取 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
不支持在文字字符串上使用
#
,但是是否有使用变量的解决方法?

string bash path parameter-expansion
1个回答
0
投票

但是可以有使用变量的解决方法吗?

不,没有解决方法。任何 variable 扩展,例如

${#
都适用于 variables,而不是字符串。

© www.soinside.com 2019 - 2024. All rights reserved.