shell脚本多个生成器

时间:2016-04-19 17:53:04

标签: bash shell scripting

嗨:)在项目上需要帮助,处理shell脚本并需要弄清楚如何在某些数字后打印汽车名称时它们可以被列表中的某些数字整除。

这里是生成器,它需要来自用户的两个整数,(不包括它们的部分),并打印它们之间的平均值。我需要在数字整除后打印汽车名称:5,7,10。

5 =福特7 =宝马10 =流浪者

发电机:

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

任何帮助将不胜感激:(我完全无能为力:( 感谢

2 个答案:

答案 0 :(得分:1)

你的意思是这样吗?

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

输出

0 Ford BMW Rover
2
4
6
8
10 Ford Rover

不确定您是否希望0行包含名称,但这就是%的工作原理。如果您愿意,可以添加0的显式检查。

答案 1 :(得分:1)

awk救援!

$ 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 ""}}'

而不是对fizzbuzz值进行硬编码,让程序为您处理。脚本解析模式并将除数/值赋给地图a。从开始到结束迭代两次检查每个除数,如果除法将标记附加到该行。如果不需要保护,则假设start作为偶数值输入。