Shell Scripting:有没有办法使用变量作为输出而不是可执行文件?

时间:2018-04-19 18:18:37

标签: bash shell zsh

对于如下命令:

/command -in input_filename -of output_filename

是否可以使用variable代替output_filename

我尝试过重定向但是没有用

编辑:

在阅读评论和答案后,我觉得这个问题可能令人困惑。可执行文件需要输出的文件名。但是,我想将输出保存在变量中。

4 个答案:

答案 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)

请注意,您将丢失文件的格式,希望它是单行文件。