Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell脚本,用于计算文件中的字符、单词和行数 #/bin/bash 清楚的 字符=0 字=0 line=`echo-e“\n”` 空格=`echo-e“”` 如果[$#-eq 0] 然后 echo“您没有输入任何行” elif[$#-eq 1] 然后 文件名=$1 读时-n1换行符 做 如果['$newline'=='$line'] 然后 ((line++) elif['$newline'=='$space'] 然后 ((word++) 其他的 ((字符++)) fi 完成_Bash_Shell - Fatal编程技术网

Shell脚本,用于计算文件中的字符、单词和行数 #/bin/bash 清楚的 字符=0 字=0 line=`echo-e“\n”` 空格=`echo-e“”` 如果[$#-eq 0] 然后 echo“您没有输入任何行” elif[$#-eq 1] 然后 文件名=$1 读时-n1换行符 做 如果['$newline'=='$line'] 然后 ((line++) elif['$newline'=='$space'] 然后 ((word++) 其他的 ((字符++)) fi 完成

Shell脚本,用于计算文件中的字符、单词和行数 #/bin/bash 清楚的 字符=0 字=0 line=`echo-e“\n”` 空格=`echo-e“”` 如果[$#-eq 0] 然后 echo“您没有输入任何行” elif[$#-eq 1] 然后 文件名=$1 读时-n1换行符 做 如果['$newline'=='$line'] 然后 ((line++) elif['$newline'=='$space'] 然后 ((word++) 其他的 ((字符++)) fi 完成,bash,shell,Bash,Shell,在变量周围加双引号是可以的,但不要像这里那样在每个变量周围加单引号: #!/bin/bash clear character=0 word=0 line=`echo -e "\n"` space=`echo -e " "` if [ $# -eq 0 ] then echo "You haven't entered any line" elif [ $# -eq 1 ] then filename=$1 while read -n1 newline do

在变量周围加双引号是可以的,但不要像这里那样在每个变量周围加单引号:

#!/bin/bash

clear
character=0
word=0
line=`echo -e "\n"`
space=`echo -e " "`


if [ $# -eq 0 ]
then
    echo "You haven't entered any line"
elif [ $# -eq 1 ]
then
    filename=$1
    while read -n1 newline
    do
        if [ '$newline' == '$line' ]
        then
            ((line++))
        elif [ '$newline' == '$space' ]
        then
            ((word++))
        else
            ((character++))
        fi
    done < $filename
    echo "No of line =$line"
    echo "No of word =$word"
    echo "No of character =$character"
fi
要了解失败的原因,请查看以下代码,其中淡蓝色文本为代码,粉色文本为输出:

    if [ '$newline' == '$line' ]
三,

一美元

假的

真的


你知道单引号的作用吗?它防止任何转义或字符串替换发生。换句话说,它表示原始字符串(您甚至不能在单个引号内放入单个引号!)

如果要在内部展开变量,则应更改为双引号:

if[“$newline”==“$line”]
#    ^        ^    ^     ^

我没有得到欲望输出。任何人都可以帮助!为什么不直接使用
wc(1)
?它是核心实用程序的一部分,应该在任何地方都可以使用。这比三次调用awk更有效:
readlines words chars<关于OP是想要纯
bash
还是shell代码(即需要练习帮助)似乎有些混乱,而不是使用现有的工具。不要对变量使用大写。不要
cat
单个文件。引用你的变量。这可以替换为
set--$(wc)否决票的原因是什么?它解决了OP的问题,即使它不是最有效的solution@iBug,有趣--通常我引用
代码:
,代码,
输出:
,输出格式中的内容。这里的颜色似乎更简单。我想看看有什么证据表明SE蓝色代码和粉色文本颜色是相同的事实上,对于色盲来说很难区分。@iBug,似乎证实了这对某些人来说确实是个问题。@iBug,谢谢,但我第一次理解了你的意思。元链接指的是色盲编码员的一般问题,而不是你对英文颜色名称的偏好。你能更正一下吗t我的代码,即使我没有在变量周围使用单个代码,它也不起作用。它应该先计算字符,然后计算行。@uttam,请编辑您的问题,然后在运行时显示新修改的代码和输出。也许这个答案太类似于?@agc not too silimar。解释是我自己写的。我投票支持您,满意。
a=3 
echo $a
echo '$a'
if [ '$a' == 3 ] ; then echo true ; else echo false ; fi
if [ $a == 3 ] ; then echo true ; else echo false ; fi
#!/bin/bash

WC=$(cat $1 | wc -mlw)

echo "No of line =$(echo $WC | awk '{print $1}')"
echo "No of word =$(echo $WC | awk '{print $2}')"
echo "No of character =$(echo $WC | awk '{print $3}')"