FizzBu​​zz示例中的这个Bash语法是什么

时间:2015-01-21 10:16:00

标签: bash fizzbuzz

我刚刚在Hacker News上找到了以下FizzBu​​zz示例,它使用了一种语法,我发现很难搜索

for num in {1..100} ; do
  out=""
  (( $num % 3 == 0 )) && out="Fizz"
  (( $num % 5 == 0 )) && out="${out}Buzz"
  echo ${out:-$num}
done

我不明白的是echo行中变量用法的工作原理。虽然我很明显可以看到它$out如果不是空的,除了$num

1 个答案:

答案 0 :(得分:4)

for num in {1..100} ; do 

从1循环到100.路上每个整数的数字

out=""

什么都不设

(( $num % 3 == 0 )) && out="Fizz"

如果该数字可以被Fizz

设置为3整除
  (( $num % 5 == 0 )) && out="${out}Buzz"

如果该数字可以被{set {1}}整数out整除,则可归为out,然后是Buzz。

  echo ${out:-$num}

使用参数替换来检查out是否包含某些内容,如果不包含,则使用num代替。 Echos取代的结果。

done

资源

http://tldp.org/LDP/abs/html/parameter-substitution.html - 参数替换

http://tldp.org/LDP/abs/html/ops.html - 让命令((...))

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html - 循环