bash中string的长度
你如何获得存储在variables中的string长度并将其分配给另一个variables?
myvar="some string" echo ${#myvar} # 11  你如何设置另一个variables到输出11 ? 
UTF-8string长度
除了fedorqui的正确答案 ,我想显示string长度和字节长度之间的区别:
 myvar='Généralités' chrlen=${#myvar} oLang=$LANG oLcAll=$LC_ALL LANG=C LC_ALL=C bytlen=${#myvar} LANG=$oLang LC_ALL=$oLcAll printf "%s is %d char len, but %d bytes len.\n" "${myvar}" $chrlen $bytlen 
将呈现:
 Généralités is 11 char len, but 14 bytes len. 
你甚至可以看看存储的字符:
 myvar='Généralités' chrlen=${#myvar} oLang=$LANG oLcAll=$LC_ALL LANG=C LC_ALL=C bytlen=${#myvar} printf -v myreal "%q" "$myvar" LANG=$oLang LC_ALL=$oLcAll printf "%s has %d chars, %d bytes: (%s).\n" "${myvar}" $chrlen $bytlen "$myreal" 
会回答:
 Généralités has 11 chars, 14 bytes: ($'G\303\251n\303\251ralit\303\251s'). 
  Nota:根据Isabell Cowan的评论 ,我已经将设置和$LANG一起添加到$LC_ALL 。 
参数的长度
参数与常规variables相同
 strLen() { local bytlen sreal oLang=$LANG oLcAll=$LC_ALL LANG=C LC_ALL=C bytlen=${#1} printf -v sreal %q "$1" LANG=$oLang LC_ALL=$oLcAll printf "String '%s' is %d bytes, but %d chars len: %s.\n" "$1" $bytlen ${#1} "$sreal" } 
将工作
 strLen théorème String 'théorème' is 10 bytes, but 8 chars len: $'th\303\251or\303\250me' 
 有用的printf校正工具: 
 strU8DiffLen () { local bytlen oLang=$LANG oLcAll=$LC_ALL LANG=C LC_ALL=C bytlen=${#1} LANG=$oLang LC_ALL=$oLcAll return $(( bytlen - ${#1} )) } 
那么现在:
 for word in Généralités Language Théorème Février ;do strU8DiffLen $word printf "%-$((12+$?))s %2d more byte / %3d chars \n" "$word" $? ${#word} done Généralités 3 more byte / 11 chars Language 0 more byte / 8 chars Théorème 2 more byte / 8 chars Février 1 more byte / 7 chars 
要获取存储在variables中的string的长度,请说:
 myvar="some string" size=${#myvar} 
 要确认它已妥善保存,请echo一下: 
 $ echo "$size" 11 
您可以使用:
 MYSTRING="abc123" MYLENGTH=$(printf "%s" "$MYSTRING" | wc -c) 
-  用于字节计数的wc -c或wc --bytes字节=用2,3或更多字节计算Unicode字符。
-   wc -m或wc --chars字符计数= Unicode字符被统计为单个直到他们使用更多的字节。
 如果你想在命令行或函数参数中使用它,请确保使用size=${#1}而不是size=${#$1} 。 第二个可能更直观,但语法不正确。 
在回复开始后:
如果你想用这个命令行或函数参数…
与代码:
 size=${#1} 
可能有这种情况,你只是想检查一个零长度的参数,并不需要存储一个variables。 我相信你可以使用这种语法:
 if [ -z $1 ]; then #zero length argument else fi 
请参阅GNU和wooledge以获得更完整的Bash条件expression式列表。
这里有几种方法来计算variables的长度:
 echo ${#VAR} echo -n $VAR | wc -m echo -n $VAR | wc -c printf $VAR | wc -m expr length $VAR expr $VAR : '.*' 
并将结果设置为另一个variables,只需将上面的命令分配给另一个variables,如下所示:
 otherVar=`echo -n $VAR | wc -m` echo $otherVar 
http://techopsbook.blogspot.in/2017/09/how-to-find-length-of-string-variable.html
我想要最简单的情况,最后这是一个结果:
 echo -n 'Tell me the length of this sentence.' | wc -m; 36 
我会用这样的东西:
 var2=$(echo $myvar | wc -c) 
你不需要脚本。