这个 bash 脚本应该通过 ssh 从其他地方获取令牌,然后运行 curl 命令,从 stdin 上的文件中读取数据。
#!/usr/bin/env bash
TOKEN=$(ssh somewhere cat sometoken.txt)
curl https://example.com \
-H "Authorization: Bearer $TOKEN" \
-H "someparam=@-" \
-X POST
脚本是这样调用的:
cat somefile | myscript
当我硬编码TOKEN=abcd123
而不是使用$(ssh ...)
时,somefile
curl 会按预期上传。
但是,当我使用$(ssh ...)
我的文件时没有上传。
我假设我的脚本的标准输入被破坏了,$(ssh ...)
但我不知道如何解决这个问题。
任何帮助将非常感激。
简而言之,使用
ssh -n ...
该
ssh
工具从标准输入读取所有数据。它这样做是为了能够将它传递给您在远程端执行的任何命令(ssh remote 'cat >out' <in
如果您愿意,可以使用将文件的内容复制到远程系统)。使用它的
-n
选项,您告诉它不要这样做。它或多或少等同于/dev/null
通过执行重定向到其标准输入ssh ... </dev/null
。