从没有循环的变量中获取多个子字符串

时间:2014-11-06 20:28:45

标签: regex bash sed grep

我正在编写一个脚本,根据提供的参数,将解析UPS(不间断电源)的Web界面的数据。我的整个脚本编码正确,以适应一个参数。

我想要完成的是输入一个由'+'符号分隔的参数字符串,例如hostname + model + status + uptime,然后grep每个参数,而不使用循环。这可行吗?

通过使用位置参数$ 1将参数赋值给$ _var。就像我说的那样,我设置这个设置可以正常使用一个参数。我只想修改多个参数的脚本。

#!/bin/bash

curl=/usr/bin/curl
grep=/bin/grep
sed=/bin/sed
site=<ommitted>

if [ ${#} -lt 1 ]
then
     echo "usage: $0 <vars := name|\"name|name\">"
     exit 1
fi

# required parameters
_vars=${1}

result="$(${curl} -s ${site} | ${sed} -e 's/1,142d//; s/<[^>]*>//g' | ${grep} -w -i -E ${_vars} | ${sed} 's/.*: //; s/^\([0-9.-]\+\) .*/\1/')"

echo "${result}"

1 个答案:

答案 0 :(得分:1)

您可以将+转换为|并使用grep -E

vars='hostname+model+status+uptime'
... | grep -E "${vars//+/|}"