簡體   English   中英

重擊-從可變詞中刪除特定字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM