的功能(输出功率设定给定输入的)背后bash的功率设定功能
p() { [ $# -eq 0 ] && echo || (shift; p "[email protected]") |
while read r ; do echo -e "$1 $r\n$r"; done }
测试输入逻辑
p $(echo -e "1 2 3")
测试输出
1 2 3
2 3
1 3
3
1 2
2
1
我有困难在下面的代码中掌握递归。我试图通过把一些变量的代码来表示递归和执行顺序的水平内去理解它,但我仍然感到困惑。
这里有事情,我可以这么远告诉:
- 子shell的输出将不会显示在最终输出,它就会通过管道重定向到读命令
- 的
echo
命令追加新所有输出
执行我看到的顺序行:
- P(1 2 3) - > 1,接着下面输出的所有组合\ n 下面
- P(2 3)输出的所有组合 - > 2 3 \ N3 \ n
- P(3) - > 3
- p() - >
所以我觉得我应该有p(2)而不是p(3)执行#3,但如何发生的呢?由于shift
只朝着一个方向。
如果我是用“P(1 2 3 4)”作为输入,它是示出了“1 2 3”,在混淆我输出的部分。
'$(回声-e “1 \ N2 \ N3”)'相当于'1 2 3'。也许只遵循'p 1 2 3'会更简单? –
我适时改变我的问题。这当然可以提高可读性。 – Forethinker