0

查看Dokku 源代码,我注意到管道和重定向的两种我不熟悉的用法。

一种是:cat | command

例子:id=$(cat | docker run -i -a stdin progrium/buildstep /bin/bash -c "mkdir -p /app && tar -xC /app")

另一个是cat > file

例子:id=$(cat "$HOME/$APP/ENV" | docker run -i -a stdin $IMAGE /bin/bash -c "mkdir -p /app/.profile.d && cat > /app/.profile.d/app-env.sh")

在这两种情况下,管道和重定向有什么用?

4

1 回答 1

1

通常,这两种用法都是完全没用的。

cat不带参数从标准输入读取,并写入标准输出。

cat | command等价于command

&& cat >file等价于>file,假设前面的命令处理了标准输入。

仔细观察,第二个示例中该命令的唯一目的cat是从标准输入读取。没有它,您会将 的输出重定向mkdir到文件。因此,该命令首先确保目录存在,然后将您通过标准输入提供给它的任何内容写入文件。

于 2013-10-01T11:33:42.187 回答