shell 脚本中不带参数的 echo 的使用

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")

答案1

它用于格式化目的。

$ 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
}

你说没有它就行不通的原因是因为它确实很重要一些命令就在那里,否则逻辑就会被破坏(尽管事实上,逻辑有点奇怪)。

相关内容