#! /bin/bash
sum=0
for number in $@
do
sum=$(( sum + number ))
done
grep [!0-9+-] "$@" | echo $sum
该脚本旨在获取位置参数并将它们添加到一起,但是我还需要脚本再执行两次操作。
当我运行此脚本时,grep会在当前目录中搜索我输入的表达式的任何其他目录或文件。我需要grep来搜索位置参数的单词,然后将它们生成到stdout。目前,输出只是参数的总和,并且在使用字母时不会识别或产生任何消息。
答案 0 :(得分:0)
这是我建议你调整的地方。我假设你在你的文件中使用了参数,因为你正在使用$ @ ...你还需要使用-E进行正则表达式搜索。
#!/bin/bash
sum=0
homeworkassignment=1
wordfound=false
for number in $@
do
evaluate=$(echo "$number" | grep [!0-9+-])
#check for numbers in $@
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
输出:
[root@localhost ~]# ./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 NUMBBER 1 NO NUMBERS 2 NO NUMBERS 3 NO NUMBERS 4的行是因为整行与数字匹配。您可能需要使用sed来完成仅显示此输出中的数字。