1

私はコードを持っています:

od -An -t x1 <"$file" |       
while read line;do               
  for char in $line;do  
    if [ $needspace -eq 0 ]
    then 
      export  hexs=$hexs`printf "%.2s" "$char"` 
      needspace=1
    else
      export hexs=$hexs`printf "%.2s " "$char"`    
      needspace=0  
    fi
    if [ `printf "%d" "0x$char" ` -lt 32 ] || [ `printf "%d" "0x$char"` -gt 126 ]
    then
      text=$text.
    else
      text=$text`echo -e "\x$char"`  
    fi
    charsnow=$(($charsnow+1))
  done  
  sup=1   
  echo $sup
done
echo $sup

問題は次のとおりです。最初に1をecho $sup書き込みますが、2番目echo $supは何も書き込みません。「while」から$supを取得できないのはなぜですか?

4

1 に答える 1

3

あなたはサブシェルを持っているので、副作用は起こり得ません。http://mywiki.wooledge.org/BashFAQ/024

于 2012-12-19T07:23:03.560 に答える