Bash 스크립트에 이상한 문제가 있습니다. 변수 NumTMPara
은 내부 루프 내부에 올바른 값을 가지고 있지만 루프 외부에서는 값이 0입니까? 이 때까지변수가 루프 외부에서 정의되지 않았습니다.
NCGT0030 14189 16 0 16 TC Packet ID 1
NCGT0040 14190 18 0 16 TC Packet Seq Control 2
NCGT0020 14188 20 0 16 Generic Failure ID 3
NCGB00B4 14074 22 0 32 Data Field Header 4
...
echo "packet.txt"
cat $SRDB_dir/tpcf.dat | sed -e 's/[\t]/;/g' \
| while read my_line
do
PID_SPID=$(echo $my_line | cut -f1 -d';')
TPCF_NAME=$(echo $my_line | cut -f2 -d';')
NumTMPara=0
cat $SRDB_dir/plf.dat | sed -e 's/[\t]/;/g' | grep ";$PID_SPID;" \
| while read my_line2
do
PCF_NAME=$(echo $my_line2 | cut -f1 -d';')
Param_ID=$(cat $destination/tmparam.txt | sed -e 's/[\t]/;/g' | grep ";$PCF_NAME," | cut -f1 -d ';')
OFFBYTE=$(echo $my_line2 | cut -f3 -d';')
OFFBIT=$(echo $my_line2 | cut -f4 -d';')
Myptc=$(grep $PCF_NAME $SRDB_dir/pcf.dat | sed -e 's/[\t]/;/g' | cut -f5 -d';')
Mypfc=$(grep $PCF_NAME $SRDB_dir/pcf.dat | sed -e 's/[\t]/;/g' | cut -f6 -d';')
WIDTH=$(get_width $Myptc $Mypfc)
PCF_RELATED=""
PCF_DESCR=$(grep "^$PCF_NAME" $SRDB_dir/pcf.dat | sed -e 's/[\t]/;/g' | cut -f2 -d ';')
let NumTMPara=1+${NumTMPara}
#here, the value is correctly reported
echo -e "\t$PCF_NAME\t$Param_ID\t$OFFBYTE\t$OFFBIT\t$WIDTH\t$PCF_RELATED\t$PCF_DESCR \t${NumTMPara}"
packetligne="\t$PCF_NAME\t$Param_ID\t$OFFBYTE\t$OFFBIT\t$WIDTH\t$PCF_RELATED\t$PCF_DESCR"
done
#Why does NumTMPara = 0 ??
echo -e "$PID_SPID\t$TPCF_NAME\t${NumTMPara}"
done
모든 것이 괜찮 :
10512 YCSR271B 0
왜 0 여기
내 스크립트입니다?
OMG, 서식을 수정하십시오. – KurzedMetal
탭을 세미콜론으로 대체 할 필요가 없습니다.'cut -d $ '\ t'-f2'는 탭에서 직접 작동합니다. – chepner
@chepner : 탭은 기본 구분자이므로 'cut -f2'이면 충분합니다. – ruakh