我正在编写一个脚本,根据提供的参数,将解析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}"
答案 0 :(得分:1)
您可以将+
转换为|
并使用grep -E
:
vars='hostname+model+status+uptime'
... | grep -E "${vars//+/|}"