[英]Bash - Remove specific character from variable words
我編寫了一個文本文件,其中描述了以下參數:
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”
您可能會考慮使用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
您可以使用${string:position}
從$position
$string
中提取子$string
~$ secondTerm="u16NOTDEFINED"
~$ echo ${secondTerm:3}
NOTDEFINED
您還可以使用${string:position}
指定長度:
~$ input="status.u16NOTDEFINED"
~$ echo ${input:7:3}
u16
修改行:
secondTerm=${input#*.}
至:
secondTerm=${input#*.u16}
:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.