ここで調整を提案します。私はあなたが$ @を使っているのであなたのファイルに引数を使用していると仮定します...正規表現の検索には-Eも必要です。
#!/bin/bash
sum=0
homeworkassignment=1
wordfound=false
for number in [email protected]
do
evaluate=$(echo "$number" | grep [!0-9+-])
#check for numbers in [email protected]
if [ $? = '0' ]; then
numericvalue=$(echo $number | grep [!0-9+-])
sum=$(($sum + $numericvalue))
else
if [ $homeworkassignment=1 ]; then echo "NO NUMBER"; fi
if [ $homeworkassignment=2 ]; then wordfound=true; fi
fi
done
echo "The Total Sum is "$sum
if ([ $homeworkcode -eq 2] && [ $wordfound -eq "true" ]); then echo "A Word was Found"'!';fi
出力:
[[email protected] ~]# ./so_38517168.sh 2 1 2 3 4 NO NUMBERS 1 NO NUMBERS 2 NO NUMBERS 3 NO NUMBERS 4
NO NUMBERS
NO NUMBERS
NO NUMBERS
NO NUMBERS
NO NUMBERS
NO NUMBERS
NO NUMBERS
NO NUMBERS
2 1 2 3 4 NO NUMBERS 1 NO NUMBERS 2 NO NUMBERS 3 NO NUMBERS 4
The Total Sum is 22
着目その2つの1 2 3 4 NO番号1〜NO NUMBERS 2 NO NUMBERS全体の行番号と一致したため、4は3つのNO番号を抽出ライン。この出力から数字だけを表示するには、おそらくsedを使用する必要があります。
最終目標は何ですか。 –
数字を一緒に追加するだけで、単語や文字が表示された場合はエラーメッセージが表示されます。私は今エコー$和を削除しました。 –
ようこそスタックオーバーフロー!変更する必要のある最小限の例を投稿してください(// stackoverflow.com/help/mcve)。修正が必要なものについて十分に説明してください。いくつかの例があなたを助けるために長い道を行くでしょう。 – FrankerZ