Bash also interprets a number of multi-character options
答案:
#! /bin/bashfor i in bash also interprets a number of multi-character optionsdo n=`echo "$i" | wc -m` if (($n<6)) then echo $i fidone
解析:思路是使用for循环将这句话的每个词的字数统计出来,然后再使用if判断将小于6的词打印
使用for循环将这段话中每个单词依次循环赋值给变量$i,首先,第一次循环将第一个词赋值给$i,然后输出$i,并使用管道符|将输出结果给后面的wc -m命令(这个命令作用是统计字符数),将统计结果赋值给变量$n,``反引号的作用就是将命令的执行结果反馈。
使用if判断,判断变量$n是否小于6,如果$n小于6,则输出$i,否则不作执行。到这里第一次循环结束。
最后执行第二次循环,第三次循环。。。。依次执行
答案2:
#!/bin/bash##将需要统计的字母放在一个文本中##将文本作为变量输入read -p "please input a filename:" p##统计字符数n=`cat $p |wc -w`for i in `seq 1 $n`do##截取字符 nn=`cat $p |cut -d " " -f$i`##计算截取的字符 mm=`echo $nn |wc -m`##判断 if [ $mm -lt 6 ] then echo $nn fidone
解析:把这段话保存在一个文本中,把文本名作为变量赋值给变量$p,然后使用wc -w统计词数,统计的结果赋值给变量$n
使用for循环,将1-$n依次赋值给$i,这里“seq 1 $n”,就是1,2,3....$n。
第一次循环,使用cut截取字符串,cut -d “ ”-f$i的意思就是,以空格为分隔符,截取$i段,第一次循环,就是$i=1,也就是第一段
将截取第一段的结果赋值给变量$nn,使用wc -m 命令统计字符数,将结果赋值给变量$mm.
使用if判断,判断变量$mm,也就是第一个词的字符数是否小于6,-lt是小于的意思,如果小于6,则输出这个词$nn,否则不执行。
第一次循环结束。
依次执行第二次循环,第三次循环。。。。第$i次循环