我有一个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?