我刚刚在Hacker News上找到了以下FizzBuzz示例,它使用了一种语法,我发现很难搜索
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
答案 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 - 让命令((...))