[問題] bash讀檔案多跑出一個空白鍵

作者: ringal (皓呆)   2017-04-18 08:06:55
小弟試著寫一個bash,自己抓檔案內的資料,然後丟進一個python程式生成檔案
由於python程式中有自動偵測MAC超過12位元就跳出的情況
在跑程式的時候不斷顯示MAC超過的12位元導致執行失敗
最後只好修改了python把位元數刪掉,雖然能執行成功
不過最後MAC號命名的時候發現檔案都多了一個空白
EX:
MAC:112233445566 正常生成檔案應該是112233445566.bin
實際:
MAC:112233445566 結果生成檔案名稱112233445566 .bin
也確認過mac.txt底下的檔案沒有空白
mac.txt內資料: ser.txt pin.txt
112233445566 1000001 12345678
223344556677 1000002 23456789
想請問這個空白的產生,是讀取迴圈哪裡有錯誤嗎?..感謝
↓這部分是網路上參考的,不太明白意思
#! /bin/bash
paste mac.txt ser.txt pin.txt | while IFS="$(printf '\t')" read -r f1 f2 f3
do
mac_addr=$f1
serial_num=$f2
pin_num=$f3
echo -n "MAC="$mac_addr
echo -n "SER="$serial_num
echo -n "PIN="$pin_num
python2.7 build-unit.py "-m" $mac_addr "-s" $serial_num "-p" $pin_num
cp gen/a_file.bin gen_bk/$mac_addr.bin
cp gen/file.txt otp_bk/$mac_addr$otpcfg.txt
done
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2017-04-18 12:06:00
大概是因為你用 tab 分欄但是剛好混了空白進去吧IFS 是指定給 bash 用的分隔字元
作者: ringal (皓呆)   2017-04-18 23:55:00
我的訊息可能讓人有誤解,我是直接把資料分成三個檔案。每個檔案裡面都是一個資料一行
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2017-04-19 00:07:00
噢 那你那個 IFS=... 沒必要加啊呃不對啊 paste 做的事情就是你每個檔案的每一行用tab接起來所以還是要 (剛剛沒反應過來不過我實際試了一下 沒有這問題耶 (抓頭多半還是因為一開始給的檔案裡有空白字元造成的要不就是治標的方式 在 python 腳本裡把空白去掉
作者: ringal (皓呆)   2017-04-19 01:22:00
有可能是電腦問題嗎感覺我最近經歷了很多電腦問題造成很多無法解釋的原因
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2017-04-19 01:38:00
結果完全忘了要你在腳本錢加 set -x這個會吐出 bash 執行過程中他實際執行的指令會讓 bash 吐出 (更正至少能看到是哪部開始錯的看起來你的檔案是在 windows 生的看是先用 dos2unix 轉過或是 tr 處理吧把 \r 去掉就對了是說你貼的 log 看起來跟原本貼的腳本不一樣

Links booklink

Contact Us: admin [ a t ] ucptt.com