2

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

4

1 に答える 1

4
for num in {1..100} ; do 

1 から 100 までループします。途中の各整数に num を設定します

out=""

無に着手する

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

数が 3 で割り切れる場合は Fizz に設定します

  (( $num % 5 == 0 )) && out="${out}Buzz"

数値が 5 で割り切れる場合は、Buzzoutに含まれるものに設定します。out

  echo ${out:-$num}

パラメータ置換を使用して何かが含まれていることを確認し、含まれていない場合は代わりに num を使用します。置換のエコー結果。

done

資力

http://tldp.org/LDP/abs/html/parameter-substitution.html - パラメータ置換

http://tldp.org/LDP/abs/html/ops.html - let コマンド((...))

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html - ループ

于 2015-01-21T10:27:51.910 に答える