スクリプト内のコレクションの数を見つけるシェルスクリプト

スクリプト内のコレクションの数を見つけるシェルスクリプト

スクリプトは次のとおりです。

clear
echo
read str
len=`expr length $str`
count=0
while [ $len -gt 0 ]
do
    ch=`echo $str | cut -c $len`
    case $ch in
        [(aeiouAEIOU)]
            count=`expr $count + 1`
            echo $ch
            ;;

    len=`expr $len - 1`
done
echo $count

間違い:

prog6: line 12: syntax error: unexpected newline (expecting ")")

答え1

なぜ使用しないのですか:

grep -o [aeiouAEIOU] file | wc -l

コードは次のとおりです(修正済み)。

#!/bin/bash

clear
echo
read str
len=$(expr length $str)
count=0
while [ $len -gt 0 ]
do
   ch=$(echo $str | cut -c $len)
   case $ch in
      [aeiouAEIOU] )
         count=$(($count + 1))
         echo $ch
      ;;
   esac
   len=$(( $len - 1 ))
done
echo $count

答え2

インデントなどを確認するために一部の形式を再指定できると思います。私を驚かせる唯一のことは、あなたがesacあなたの契約を締結する声明を持っていないということですcase

答え3

perl -n0E 'say y/aeiou//' file

Perlでは、翻訳(y///)関数は翻訳された名前を返します。

答え4

echo -n "enter string : "
read str
v=$(echo $str | grep -o -i "[aeiou]" | wc -l)
echo $v

関連情報