Bash script store command output into variable

前端 未结 2 1948
悲哀的现实
悲哀的现实 2020-12-04 20:58

I have a problem concerning storing the output of a command inside a variable within a bash script.
I know in general there are two ways to do this

either

<
相关标签:
2条回答
  • 2020-12-04 21:46
     version=$(java -version 2>&1)
    

    The version param only takes one dash, and if you redirect stderr, which is, where the message is written to, you'll get the desired result.

    As a sidenote, using two dashes is an inofficial standard on Unix like systems, but since Java tries to be almost identical over different platforms, it violates the Unix/Linux-expectations and behaves the same in this regard as on windows, and as I suspect, on Mac OS.

    0 讨论(0)
  • 2020-12-04 21:47

    That is because java -version writes to stderr and not stdout. You should use:

    version=$(java -version 2>&1)
    

    In order to redirect stderr to stdout.

    You can see it by running the following 2 commands:

    java -version > /dev/null
    
    java -version 2> /dev/null
    
    0 讨论(0)
提交回复
热议问题