上下文是:
eval TLEN=\${#$1}
if [ $TLEN -gt 35 ]
then
...
fi
我猜它可能用于找出$1的长度。我不知道“\${#$1}”是什么意思。 我很久以前读过Bash手册,现在大部分都忘了,请解释一下 ${something} 表示什么,我能模糊地记得这种符号是一种常见的模式。
好的,我在手册中找到了答案。“${#parameter}”用于计数长度。
上下文是:
eval TLEN=\${#$1}
if [ $TLEN -gt 35 ]
then
...
fi
我猜它可能用于找出$1的长度。我不知道“\${#$1}”是什么意思。 我很久以前读过Bash手册,现在大部分都忘了,请解释一下 ${something} 表示什么,我能模糊地记得这种符号是一种常见的模式。
好的,我在手册中找到了答案。“${#parameter}”用于计数长度。
代码中的 eval TLEN=\${#$1}
表示:获取第一个参数 ($1),从中读取另一个参数的数字,并计算该另一个参数的长度。
如果您的代码被称为脚本或函数 f
,如下所示:
f 2 qwe
因为eval
是一个命令,它的参数首先会经历各种扩展,包括参数扩展。因此,
eval TLEN=\${#$1}
将扩展$1
的值,这里假设$1
是一个变量名。如果$1
是foo
,那么shell会将命令扩展为
eval TLEN=\${#foo}
TLEN=${#foo}
所以TLEN
被设置为变量名称为$1
的值的长度。