首页
  • 问答
  • 教程
  • 书籍
  • IT新闻
  • 如何将变量设置为Bash中命令的输出?

    我有一个非常简单的脚本,如下所示:

    #!/bin/bash
    
    VAR1="$1"    
    MOREF='sudo run command against $VAR1 | grep name | cut -c7-'
    
    echo $MOREF
    

    当我从命令行运行这个脚本并传递参数时,我没有得到任何输出。 但是,当我运行$MOREF变量中包含的命令时,我能够获得输出。

    我想知道如何将需要在脚本中运行的命令的结果保存到变量中,然后在屏幕上输出该变量?


    除反引号之外,您可以使用$() ,我发现它更易于阅读,并允许嵌套。

    OUTPUT="$(ls -1)"
    echo "${OUTPUT}"
    

    引用( " )对于保留多行值很重要。


    更新 (2018年):正确的方法是

    $(sudo run command)
    

    你使用的是错误的撇号。 你需要` ,而不是' 。 这个字符被称为“反引号”(或“重音符号”)。

    喜欢这个:

    #!/bin/bash
    
    VAR1="$1"
    VAR2="$2"
    
    MOREF=`sudo run command against "$VAR1" | grep name | cut -c7-`
    
    echo "$MOREF"
    

    正如他们已经指出的那样,你应该使用'反引号'。

    另外建议的$(command)可以工作,它也更容易阅读,但是请注意,它仅适用于bash或korn shell(以及从那些派生的shell),所以如果您的脚本必须在各种Unix上真正可移植系统,你应该更喜欢旧的反引号符号。

    链接地址: http://www.djcxy.com/p/1683.html

    上一篇: How to set a variable to the output of a command in Bash?

    下一篇: Get current directory name (without full path) in a Bash script