Bash
在 shell 腳本中使用不帶參數的 echo
我在網上遇到了以下 bash 腳本,它列印給定元素行的冪集。
p() { [ $# -eq 0 ] && echo || (shift; p "$@") | while read r ; do echo -e "$1 $r\n$r"; done }
在第一個之後
&&
有echo
沒有任何論據。這是測試它的程式碼:
p $(echo -e "1\n2\n3")
它用於格式化目的。
$ p() { [ $# -eq 0 ] && echo || (shift; p "$@") | > while read r ; do echo -e "$1 $r\n$r"; done } $ p $(echo -e "1\n2\n3") 1 2 3 2 3 1 3 3 1 2 2 1 $ p $
p
請注意單個提示和下一個提示之間的空白行。這是echo
.這裡有更多的可讀性:
p() { if [ $# -eq 0 ]; then echo else (shift; p "$@") | while read r; do echo -e "$1 $r\n$r"; done fi }
您說沒有它就無法工作的原因是因為存在某些命令確實很重要,否則邏輯就會被破壞(儘管實際上邏輯有點奇怪)。