Bash

在 shell 腳本中使用不帶參數的 echo

  • July 1, 2015

我在網上遇到了以下 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
}

您說沒有它就無法工作的原因是因為存在某些命令確實很重要,否則邏輯就會被破壞(儘管實際上邏輯有點奇怪)。

引用自:https://unix.stackexchange.com/questions/70752