上下文是:
eval TLEN=\${#$1}
if [ $TLEN -gt 35 ]
then
...
fi
我想它可能会用来找出1美元的长度。我不知道“\ $ {#$ 1}”的意思。 我很久以前就读过bash手册了,忘记了大部分内容,请解释一下$ {something}的含义,我可以隐约回想起那种符号是一种常见的模式。
好的,我在手册中找到了它。 “$ {#parameter}”响应计算长度。
答案 0 :(得分:2)
行eval TLEN=\${#$1}
表示:取第一个参数($ 1),从中读取另一个参数的编号并计算另一个参数的长度。
如果您的代码被调用为脚本或函数f
,如
f 2 qwe
将TLEN计算为3,因为它将采用第一个参数,它指向第二个参数,第二个参数的长度为3
答案 1 :(得分:0)
由于eval
是一个命令,它的参数首先会经历各种扩展,包括参数扩展。因此,
eval TLEN=\${#$1}
会扩展$1
的值,大概是变量的名称。如果$1
为foo
,则shell会将命令扩展为
eval TLEN=\${#foo}
删除引号后,实际评估的命令是
TLEN=${#foo}
因此TLEN
设置为变量值的长度,该变量的名称为$1
的值。