我想在shell脚本中计算一个单词中的元音和辅音的数量,但我不确定如何运行这个单词。谁能帮我? 到目前为止我所拥有的是:
#!/bin/bash
echo 'Give a word'
read word
case $word
in
a*|e*|i*|o*|u*)
vowels=&((klinker + 1 ))
;;
*)
consonants=&((medeklinker + 1 ))
;;
esac
echo $vowels
echo $consonants
答案 0 :(得分:1)
假设你想要计算元音的数量和辅音的数量,并且shell是bash
,那么:
word=abstemiously
vowels=$(echo $word | sed 's/[^aeiou]//g')
consonants=$(echo $word | sed 's/[aeiou]//g')
echo "${#word} characters"
echo "${#vowels} vowels"
echo "${#consonants} consonants"
输出:
12 characters
5 vowels
7 consonants
您可以压缩处理,并且可以使用tr
代替sed
。至少在Bash 4.x中,shell中的替换操作可能是可用的,因此您根本不必运行外部程序(例如tr
或sed
)。您还需要考虑标点符号,数字和空格(一般来说,非字母)会发生什么。同样,有多种方法可以解决这些问题。
答案 1 :(得分:1)
vowels=`echo $word | tr -cd 'aeiou' | wc -c`
答案 2 :(得分:0)
只需使用bash:
letters=${word//[^[:alpha:]]/} # remove all whitespace, punctuation, etc
cnsnnts=${letters//[aeiou]/} # remove vowels
num_consonents=${#cnsnnts}
num_vowels=$(( ${#letters} - $num_consonents ))
答案 3 :(得分:0)
#A非常简单的计算元音和辅音的程序:
读取单词
v =`echo $ word | tr -cd'aeiou'| wc -c`
c =`echo $ word | tr -cd'bcdfghjklmnpqrstvwxyz'| wc -c`
echo“vowels = $ v”
echo“consonants = $ c”