终端 shell:如何使用 echo 而不是文本文件作为命令行参数
Terminal shell: How to use echo instead of a text file as command-line arguments
我有一个命令行实用程序,它需要一个文本文件(以格式化输出)作为参数。我只需要纯值,不需要格式化,所以我想有一个单行脚本来获取值。
文本文件template.file
仅包含:
这是我的实用程序的示例:
vclient -h 10.0.0.131:3002 -t template.file -g getTempKist
我想要的是这样的:
vclient -h 10.0.0.131:3002 -t $(echo '$1') -g getTempKist
有谁知道如何使用 echo
(或者替代方法)的结果而不是外部文本文件?
希望有人能帮忙
马库斯
使用用 `` 包围的命令(抱歉,代码格式让我无法处理这些字符)首先评估命令的结果,因此用 ` 包围您的 echo
可能会起作用。
您可以尝试两件事:
首先,您可以像这样使用标准输入作为输入:
echo '' | vclient -h 10.0.0.131:3002 -t - -g getTempKist
一些工具支持文件名参数的特殊值 -
,其中 -
代表标准输入。但是这取决于命令的实现。
如果您的 shell(如 bash
或 zsh
)支持此功能,您可以使用的第二件事是使用 process substitution:
vclient -h 10.0.0.131:3002 -t <(echo '') -g getTempKist
如果您尝试使用 echo
来简单地避免创建临时文件,那么您可能更愿意尝试看看是否可以直接粘贴到 stdin
。许多工具都支持这个:
$ cat foo.json
[1,2,3]
$ python -m json.tool foo.json
[
1,
2,
3
]
$ python -m json.tool /dev/stdin
[1,2,3] <-- Paste this into the terminal then press Ctrl-D
[
1,
2,
3
]
因此,对于 OP 中的工具:
$ vclient -h 10.0.0.131:3002 -t /dev/stdin -g getTempKist
$1 <-- Paste this into the terminal then press Ctrl-D
我有一个命令行实用程序,它需要一个文本文件(以格式化输出)作为参数。我只需要纯值,不需要格式化,所以我想有一个单行脚本来获取值。
文本文件template.file
仅包含:
这是我的实用程序的示例:
vclient -h 10.0.0.131:3002 -t template.file -g getTempKist
我想要的是这样的:
vclient -h 10.0.0.131:3002 -t $(echo '$1') -g getTempKist
有谁知道如何使用 echo
(或者替代方法)的结果而不是外部文本文件?
希望有人能帮忙
马库斯
使用用 `` 包围的命令(抱歉,代码格式让我无法处理这些字符)首先评估命令的结果,因此用 ` 包围您的 echo
可能会起作用。
您可以尝试两件事:
首先,您可以像这样使用标准输入作为输入:
echo '' | vclient -h 10.0.0.131:3002 -t - -g getTempKist
一些工具支持文件名参数的特殊值 -
,其中 -
代表标准输入。但是这取决于命令的实现。
如果您的 shell(如 bash
或 zsh
)支持此功能,您可以使用的第二件事是使用 process substitution:
vclient -h 10.0.0.131:3002 -t <(echo '') -g getTempKist
如果您尝试使用 echo
来简单地避免创建临时文件,那么您可能更愿意尝试看看是否可以直接粘贴到 stdin
。许多工具都支持这个:
$ cat foo.json
[1,2,3]
$ python -m json.tool foo.json
[
1,
2,
3
]
$ python -m json.tool /dev/stdin
[1,2,3] <-- Paste this into the terminal then press Ctrl-D
[
1,
2,
3
]
因此,对于 OP 中的工具:
$ vclient -h 10.0.0.131:3002 -t /dev/stdin -g getTempKist
$1 <-- Paste this into the terminal then press Ctrl-D