bash讀檔案多跑出一個空白鍵 - Linux

Table of Contents

小弟試著寫一個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

--

All Comments

Gary avatarGary2017-04-20
大概是因為你用 tab 分欄但是剛好混了空白進去吧
Quanna avatarQuanna2017-04-21
IFS 是指定給 bash 用的分隔字元
Lily avatarLily2017-04-22
我的訊息可能讓人有誤解,我是直接把資料分成三個檔案。每
個檔案裡面都是一個資料一行
Kristin avatarKristin2017-04-25
噢 那你那個 IFS=... 沒必要加啊
Belly avatarBelly2017-04-26
呃不對啊 paste 做的事情就是你每個檔案的每一行用tab接起來
Gary avatarGary2017-04-29
所以還是要 (剛剛沒反應過來
Lily avatarLily2017-04-30
不過我實際試了一下 沒有這問題耶 (抓頭
Aaliyah avatarAaliyah2017-04-30
多半還是因為一開始給的檔案裡有空白字元造成的
Tom avatarTom2017-05-04
要不就是治標的方式 在 python 腳本裡把空白去掉
Frederica avatarFrederica2017-05-09
有可能是電腦問題嗎
感覺我最近經歷了很多電腦問題造成很多無法解釋的原因
Joe avatarJoe2017-05-12
結果完全忘了要你在腳本錢加 set -x
這個會吐出 bash 執行過程中他實際執行的指令
Anonymous avatarAnonymous2017-05-14
會讓 bash 吐出 (更正
至少能看到是哪部開始錯的
Dorothy avatarDorothy2017-05-16
看起來你的檔案是在 windows 生的
Hedy avatarHedy2017-05-18
看是先用 dos2unix 轉過或是 tr 處理吧
Odelette avatarOdelette2017-05-21
把 \r 去掉就對了
David avatarDavid2017-05-25
是說你貼的 log 看起來跟原本貼的腳本不一樣