[问题] 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