Shell脚本计数字符时遇到问题


11

我正在尝试学习基础知识,而我的脚本在计算用户输入的字符时遇到了一个问题。这是我的脚本,有人可以指出我要去哪里了吗?

#!/bin/bash

echo "Enter a word!"    
read INPUT_STRING   
len= echo $INPUT_STRING | wc -c 
echo "Your character length is " $len
exit

Answers:


12

每一个开端都是艰难的:

#!/bin/bash
read INPUT
echo $INPUT
len=$(echo -n "$INPUT" | LC_ALL=C.UTF-8 wc -m)
echo $len

特别是,周围不能有空格,=并且必须在其中包含一个单独的命令$(...)。另外,您可能希望"使用这种语法将变量写在引号中"${INPUT}",以确保变量不会意外地与后面的内容串联在一起,并且可以包含特殊字符(例如换行符\n)。


1
谢谢您,我的代码现在可以正常工作,其他帮助将在以后为我提供帮助。谢谢
杰克·斯莱特2014年

@Gnouc感谢您的深刻见解!仍在学习...
塞巴斯蒂安

抱歉,将来您不能告诉我-n和LC_ALL = C.UTF-8的作用,因为我想知道它的用途。谢谢
Jack Slater 2014年

1
找到一个命令行开关的含义,尝试使用man命令(在这种情况下man echo-n do not output trailing newline)。频繁调用man将快速提高您的Linux技能。有关更多信息LC_ALL,请参阅本提问/回答
塞巴斯蒂安

1
从链接复制:您通常使用命令运行,LC_ALL=C以避免用户设置干扰您的脚本。例如,如果要将[a-z]26个ASCII字符从a匹配到z,则必须设置LC_ALL=C
Sebastian

8

我认为最好是使用

len=${#INPUT_STRING}

否则,回声添加的行尾字符也将被计入。除非那是您想要的。


我同意,它更短,更快。
Franki 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.