Bash also interprets a number of multi-character options


答案:

#! /bin/bash
for i in bash also interprets a number of multi-character options
do
   n=`echo "$i" | wc -m`
   if (($n<6))
   then
      echo $i
   fi
done

解析:思路是使用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
  fi
done

解析:把这段话保存在一个文本中,把文本名作为变量赋值给变量$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次循环