2015-01-21 2 views
2

Я просто нашел следующий пример FizzBuzz на Hacker News и использует часть синтаксиса я найти его трудно найтиЧто такое Bash Синтаксис в 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

Это по умолчанию ': -', если из вне ничто не печатает номер. Второй фрагмент кода здесь http://tldp.org/LDP/abs/html/parameter-substitution.html –

ответ

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

Loop от 1 до 100.Set NUM для каждого целого числа на пути

out="" 

Набор из ничего

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

Если число делится на 3, установленное Fizz

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

Если число делится на 5 единиц out на все, что содержится в out, тогда Buzz.

echo ${out:-$num} 

Использует подстановку параметров, чтобы проверить, что что-то содержит что-то, если нет, то вместо этого используйте 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 - петли

+0

@PeterR Я отклонил изменение, так как, хотя он содержит некоторую информацию, которую вы, возможно, не хотели, она может быть полезной для других , Не слишком длинная информация, которую вы хотели бы легко найти. –

+0

Это в самом конце сообщения, и есть много легко доступных для поиска сообщений, которые покрывают другой материал. Я очень благодарен, что вы нашли время, чтобы помочь мне, и вам не нужно редактировать свой пост, но мне также не нужно устанавливать лучший ответ, хотя я бы очень хотел, чтобы –

Смежные вопросы