我写了一个文本文件,其中我描述了如下参数:
status.u16OK=0x00
status.u16NOK=0x01
status.u16NOTDEFINED=0x02
以下功能必须返回状态。
function identifyStatus()
{
while read lines
do
input=${lines%=*}
firstTerm=${input%.*}
ID=${lines##*=}
if [ $firstTerm == "status" ] && [ $((ID)) == $2 ];then
secondTerm=${input#*.}
echo "status : $secondTerm"
fi
done < $1
}
我想检索状态:确定而不是状态:u16OK
答案 0 :(得分:2)
您可能会考虑使用IFS来简化代码。
$IFS - internal field separator
以下是代码:
#!/usr/bin/env bash
IFS=".="
while read status id value x
do
if [ "$status" == "status" ] && [ "$value" == $2 ];then
echo "Status ${id:3}"
fi
done < $1
答案 1 :(得分:1)
您可以使用${string:position}
在$string
$position
的子字符串
~$ secondTerm="u16NOTDEFINED"
~$ echo ${secondTerm:3}
NOTDEFINED
您还可以使用${string:position}
指定长度:
~$ input="status.u16NOTDEFINED"
~$ echo ${input:7:3}
u16
答案 2 :(得分:0)
修改行:
secondTerm=${input#*.}
到:
secondTerm=${input#*.u16}
:)