#!/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
答案 0 :(得分:1)
双引号是正常的,但不要像在此处所做的那样在每个变量周围加上单个引号:
if [ '$newline' == '$line' ]
要查看失败原因,请查看以下代码,其中淡蓝色文本为代码,并输出粉红色文本:
a=3
echo $a
3
echo '$a'
$一个
if [ '$a' == 3 ] ; then echo true ; else echo false ; fi
假
if [ $a == 3 ] ; then echo true ; else echo false ; fi
真
答案 1 :(得分:1)
你知道单引号是做什么的吗?它阻止任何转义,或字符串替换发生。换句话说,它表示原始字符串(您甚至不能在单引号中放入单引号!)。
如果您想在内部进行变量扩展,则应更改为双引号:
if [ "$newline" == "$line" ]
# ^ ^ ^ ^
答案 2 :(得分:-1)
#!/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}')"