一行代码让你的字符终端下起雪来!
在网上一段shell脚本,虽然只有一行但运行后可以在屏幕上实现下雪的效果,实在让人佩服,决定好好研究一下。
1for((I=0;J=--I;))do clear;for((D=LINES;S=++J**3%COLUMNS,--D;))do printf %*s.\\n $S;done;sleep .1;done
不过原代码虽然简洁但不太容易一下子看明白工作原理,而且只能在命令行上运行无法保存成脚本文件,所以自己按照理解重新写了一遍:
1#!/bin/sh
2
3rows=$(tput lines)
4cols=$(tput cols)
5
6i=0
7while true
8do
9 clear
10 ((x=i,i++))
11 for((r=0;r<rows;r++))
12 do
13 printf "%*s*\n" $((x**3%cols))
14 ((x--))
15 done
16 sleep .1
17done