如何解析存储在变量中的输出,存储结果并根据结果触发另一个脚本

时间:2019-01-07 12:09:29

标签: bash parsing variables

我正在编写一个脚本,以运行带有参数的另一个脚本并将输出存储到变量中。 输出有多行,但是我只需要一行包含四个特定字符串之一,并根据找到的字符串进行处理即可。

我想将命令的输出存储到$ OUTPUT中,但是无法解析并获取运行其他脚本所需的行。

OUTPUT="$(script.php $HOST $PARAMETER)"

尝试了以下简单的if语句,但是我已经失败了:

RESULT=$(grep "TEST" $OUTPUT)
if [ $? -eq 0 ]; then
    printf '%s\n' "$RESULT"
else
    printf '%s\n' "No Match"
fi

这就是我得到的,执行脚本时'-p'是$ PARAMETER:

grep: invalid option -- 'p'
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.

我在哪里得到正确的输出:

printf '%s\n' "$OUTPUT"

2 个答案:

答案 0 :(得分:0)

问题是,$OUTPUT的值在以下行中解释为shell命令行参数:

RESULT=$(grep "TEST" $OUTPUT) 

尝试:

RESULT=$(echo "$OUTPUT" | grep "TEST")

答案 1 :(得分:0)

The simplest way to avoid this error and do not thread strings like -p as parameters is to rewrite your grep line like this:

RESULT=$(grep -- "TEST" $OUTPUT)

Double dash tell grep this is the end of parameter and all the rest is threaded as data