这是一个linux命令(您可能需要cowsay
应用程序。
cowsay 'moo'
这是另一个命令:
cowsay 'moo' | cowsay -n
结果非常有趣:
______________________________
/ _____ \
| < moo > |
| ----- |
| \ ^__^ |
| \ (oo)\_______ |
| (__)\ )\/\ |
| ||----w | |
\ || || /
------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
现在,当然,重复该管道命令N次非常有趣。它看起来有点像这样:
cowsay 'moo' | cowsay -n | cowsay -n | cowsay -n | cowsay -n | cowsay -n | cowsay -n | cowsay -n | cowsay -n | cowsay -n | cowsay -n | cowsay -n
但我认为必须采用更简洁的方法来实现这一目标。我只想说我要500头奶牛都说对方,或1000或1,000,000。当然,我不仅要将手指放在粘贴按钮上吗?
这是问题所在;在bash(命令或脚本)中有一种方法可以递归地将命令的输出传递给自己一定次数吗?
答案 0 :(得分:4)
cowsayN() {
local n=$1
shift
if ((n>1)); then
cowsay -n | cowsayN $((n-1))
else
cowsay -n
fi
}
echo 'moo' | cowsayN 500
答案 1 :(得分:2)
我暂时无法测试它:
output=$(cowsay 'moo')
for ((i=0;i<50;i+=1)); do output=$(cowsay "$output"); done
echo "$output"
修改后添加&lt;&lt;&lt;传递值作为输入
output=$(cowsay <<<'moo')
for ((i=0;i<50;i+=1)); do output=$(cowsay <<<"$output"); done
echo "$output"