首页 > 解决方案 > 在终端中使用 Cat 创建文件并将文件传递给另一个命令

问题描述

我有 CLI 命令,当在外部某处创建文件并将文件名输入提供给命令时,该命令效果很好。

例如:

mycli create rr --filename ./example/rule.yaml (works perfectly)

但是,假设有人没有创建文件并想在终端中创建文件,给它一个名称并将文件名传递给命令,该命令会是什么样子?

我尝试如下:

cat <<EOF | mycli create rr --filename -
apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  password: password
  username: username
EOF

上面的方式给出了一个错误,说没有这样的文件或目录

标签: pipezshcat

解决方案


像这样的东西?

export FILENAME=`mktemp`
cat <<EOF > $FILENAME
apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  password: password
  username: username
EOF
mycli create rr --filename $FILENAME
rm $FILENAME
export FILENAME=""

(未经测试,现在不在我的 Linux 机器上,但我猜应该可以工作)


推荐阅读