P
./cool.sh: line 31: bc: command not found
./cool.sh: line 34: bc: command not found
./cool.sh: line 37: bc: command not found
E
./cool.sh: line 31: bc: command not found
./cool.sh: line 34: bc: command not found
./cool.sh: line 37: bc: command not found
There is a python3 variant in this thread [1], but if that is not "standard enough" (as someone else may have mentioned bash itself is not POSIX), this awk would also work { Warning - this awk is 1000s of times faster than the bash. So, you really probably want that sleep { and sure 100s of times faster yet may be possible. } }:
#!/usr/bin/awk -f
BEGIN {
# Split on spaces so multi-byte utf8 works
nText = split("♥ P E A C E ♥ F O R ♥ A L L", tmp, " ")
for (i = 0; i < nText; i++) text[i] = tmp[i + 1]
color0 = 12; color1 = 208 # xterm-256 color cube range
nColor = color1 - color0 # Could be a pretty gradient
w = ENVIRON["COLUMNS"]; if (w == "") w = 80
h = ENVIRON["LINES"]; if (h == "") h = 24
freq = 0.2
for (t = 0; 1; t++) {
x = int(w/2 + w/4*sin(t*freq) + 0.5) # x pos ~ sine
color = color0 + int((nColor*t)/h)%nColor # cycle colors
ch = text[t % nText] # cycle chars
printf("%*s\033[38;5;%dm%s\033[m\n", x, "", color, ch)
fflush()
# system("sleep 0.1") # awk has no builtin sleep
}
}
As to "bug reports", the T-shirt published script also fails with LC_ALL=C for me as mentioned else-thread.
FWIW, I think ancient practice to reach for `bc` instead of `awk` or even the arithmetic built into shells often annoys. The only reason I keep `bc` installed at all is to compile Linux kernels. Someone had some patch set to Linux to eliminate this very dependency many years ago now.
Very wow. Shame they assumed everyone has "bc"...