我正在编写一个脚本,以运行带有参数的另一个脚本并将输出存储到变量中。 输出有多行,但是我只需要一行包含四个特定字符串之一,并根据找到的字符串进行处理即可。
我想将命令的输出存储到$ 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"
答案 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