嗨:)在项目上需要帮助,处理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
任何帮助将不胜感激:(我完全无能为力:( 感谢
答案 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作为偶数值输入。