对于如下命令:
/command -in input_filename -of output_filename
是否可以使用variable
代替output_filename
我尝试过重定向但是没有用
编辑:
在阅读评论和答案后,我觉得这个问题可能令人困惑。可执行文件需要输出的文件名。但是,我想将输出保存在变量中。
答案 0 :(得分:3)
onSubmit() {
this.postDataIntoDB.storeData(this.questionnaire)
.subscribe(
(response) => console.log(response),
(error)=> console.log(error)
)}
良好做法,将变量声明为只读。 这样你就不会意外地覆盖它 稍后在脚本中的值。
# Declare your variable at
# some point earlier in script
variable="somevalue.txt"
.
.
.
# Use it later in script
command -f $variable
答案 1 :(得分:1)
您不能将变量指定为输出文件,然后填充它。
相反,让程序写入stdout并捕获它。如何执行此操作取决于命令。由于您未指定,以下是curl
的示例:
# Many programs automatically write to stdout when a file is not specified
myvar=$(curl http://stackoverflow.com)
# Many programs accept - to mean stdout for output files
myvar=$(curl -o - http://stackoverflow.com)
# Otherwise, you can often specify /dev/stdout
myvar=$(curl -o /dev/stdout http://stackoverflow.com)
如果由于命令没有干净输出而无法执行此操作,则可能会强制您将其写入临时文件并将其读回。
答案 2 :(得分:0)
保存命令的输出:
# Capture output into variable
output="$(command -f filename)"
# Print it / do whatever you want with it
echo "$output"
编辑:
如果命令需要以下格式:
/command -in input_filename -of output_filename
但是,您还希望捕获变量中输出文件内容,您可以在完成原始命令后将输出文件读入变量。
output="$(cat output_filename)"
这将在原始命令之后出现,因为必须先写入输出文件才能再次读取它。
答案 3 :(得分:0)
你的问题有点不清楚,但是你的上一次评论,我想你想要这个:
#!/bin/bash
#
variable=$(./command -f $inputfile)
echo $variable
这将打印命令的结果输出。请注意,这不存储命令的状态,它存储输出文本(如果有)。
对于你的问题的第2版(!):
/command -in input_filename -of output_filename
大多数命令,如果未指定-of选项,则会将输出发送到STDOUT。所以使用上面的第一种方法。
如果必须使用它,输出必须转到文件。因此,在命令完成后,将文件读入变量。
variable=$(cat output_filename)
请注意,您将丢失文件的格式,希望它是单行文件。