在curl
命令中,有--data
一个选项,当选项值以符号为前缀时,它会替换文件内容,@
例如,
curl -X POST --data @abc.json hostaddr.com
abc.json
文件内容作为 post 请求的正文发送。如果帖子正文很长/多行,则此选项很方便。
我如何在任何 Linux shell 中zshell
或可能在任何 Linux shell 中执行此操作?是否有一个glob pattern
/ prefix operator
,会将以下字符串视为文件路径并将该字符串替换为文件内容?
答案1
在大多数情况下,这将是重定向运算符( <
):
$ tr 'a' 'b' /path/to/file ## fails because `tr` works on streams
tr: extra operand ‘file’
Try 'tr --help' for more information.
$ tr 'a' 'b' < /path/to/file ## works because the file's contents are passed to tr
命令替换和重定向运算符都是由 POSIX 定义的(请参阅上面给出的命令替换链接),并且应该在几乎任何 shell 中可用。另一个相关工具是命令替换。有两种编写方法,您可以将命令括在反引号 ( `command`
) 中,也可以编写$(command)
.一般来说,后者是首选,因为它是一种更强大的语法,可以更干净地处理多个嵌套命令。
因此,要使用文件的内容,您可以编写:
command $(cat /path/to/file)
或者
command `cat /path/to/file`