如何shell脚本的输出存储在Unix系统中的变量?(How to store an output

2019-07-29 19:52发布

我有一个shell脚本“script.sh”这给输出作为“成功”或“失败”当我在UNIX窗口中执行。 现在我想script.sh的输出存入一个unix命令变量。 say $a = {output of script.sh}

Answer 1:

两个简单的例子来捕获输出pwd命令:

$ b=$(pwd)
$ echo $b
/home/user1

要么

$ a=`pwd`
$ echo $a
/home/user1

第一种方法是优选的。 请注意,不能在之后的任何空格=这个工作。

实施例使用短脚本:

#!/bin/bash

echo "hi there"

然后:

$ ./so.sh
hi there
$ a=$(so.sh)
$ echo $a
hi there

一般来说更灵活的方法是在命令返回的退出值,并用它进行进一步的处理,尽管有时我们只是希望捕获从命令输出的简单。



Answer 2:

你或许应该重新写剧本返回一个值,而不是输出。 代替:

a=$( script.sh ) # Now a is a string, either "success" or "Failed"
case "$a" in
   success) echo script succeeded;;
   Failed) echo script failed;;
esac

你就能够做到:

if script.sh > /dev/null; then
    echo script succeeded
else
    echo script failed
fi

这是其他程序要简单得多与您脚本工作,如果他们没有解析输出。 这是一个简单的变化作出。 刚刚exit 0而不是打印success ,和exit 1 ,而不是打印Failed 。 当然,你也可以打印这些值以及与合理的回报值退出,从而使包装脚本在他们的剧本是如何工作的灵活性。



Answer 3:

假设你要存储一个echo命令的结果

echo hello   
x=$(echo hello)  
echo "$x",world!  

输出:

hello  
hello,world!


Answer 4:

export a=$(script.sh)

希望这可以帮助。 注意,有变量和=之间没有空格。 为了呼应输出

echo $a


Answer 5:

你需要与前一个点启动脚本,这将使出口变量在当前的环境。

#!/bin/bash
...
export output="SUCCESS"

然后执行它像这样

chmod +x /tmp/test.sh
. /tmp/test.sh

当您需要整个输出,而不仅仅是一个单一的价值,只是把输出变量像其他的答案表明



文章来源: How to store an output of shell script to a variable in Unix?
标签: shell unix