的功能(輸出功率設定給定輸入的)背後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