简体   繁体   中英

shell scripting Multiple generator

Hi :) Need help on a project, working on shell scripting and need to figure out how to print car names after certain numbers when they're divisible by certain numbers in a list.

Here's the generator, it takes two integers from the user, (Section where they're prompted not included), and prints the evens between those. I need to print car names after numbers divisible by: 5, 7, 10.

5 = Ford 7 = Bmw 10 = Rover

Generator:

for ((n = n1; n<= n2; ++n)); do 
    out=$(( $n % 2 )) 
    if [ $out -eg 0 ] ; then 
        echo "$n" 
    fi
done 

Any help would be appreciated :( I'm completely clueless :( Thanks

Do you mean something like this?

n1=0
n2=10

for ((n = n1; n <= n2; ++n)); do
    if (( n % 2 == 0)); then
        echo -n $n 
        if (( n %  5 == 0)); then
            echo -n ' Ford'
        fi
        if (( n %  7 == 0)); then
            echo -n ' BMW'
        fi
        if (( n % 10 == 0)); then
            echo -n ' Rover'
        fi
        echo
    fi
done

Output

0 Ford BMW Rover
2
4
6
8
10 Ford Rover

Not sure you want the 0 line containing names though, but that's how % works. You can add an explicit check for 0 if you wish.

awk to the rescue!

$ awk -v start=0 -v end=70 -v pat='5=Ford,7=Bmw,10=Rover'
      'BEGIN{n=split(pat,p,","); 
             for(i=1;i<=n;i++)
               {split(p[i],d,"=");
                a[d[1]]=d[2]}
             for(i=start;i<=end;i+=2)
               {printf "%s ",i; 
                for(k in a) 
                   if(i%k==0) 
                      printf "%s ", a[k]; 
                print ""}}'

instead of hard coding the fizzbuzz values, let the program handle it for you. script parses the pattern and assigns divisor/value to a map a . While iterating over from start to end two by two check for each divisor and if divides append the tag to the line. Assumes start is entered as an even value if not need to guard for that too.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM