当我像这样运行 Centos 7 Docker Image
docker run -it centos:7 bash
运行使用Process Substitution的东西很好(正如预期的那样,因为 Bash 从一开始就支持 Process Substitution - 实际上是 Bash 1.4.x)。
例如:
while IFS= read -r test; do echo $test; done < <(cat anaconda-post.log)
但是当我切换到/bin/sh时,相同的代码不再起作用
/bin/sh
while IFS= read -r test; do echo $test; done < <(cat anaconda-post.log)
sh: syntax error near unexpected token `<'
虽然/bin/sh似乎是 Bash
/bin/sh --version
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
但是,为什么进程替换不再起作用呢?不过,其他非 POSIX 功能似乎也可以工作
echo ${PATH//:/ }
/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin