2019年3月11日 星期一

【LINUX】執行script,因隱藏字^M導致斷行的解決方法!



因執行一個scripe ,但顯示結果一直有問題,查看導出的檔案一直斷行~

檔案如下


#!/bin/bash
cat name.txt | while read name
do
echo "UPDATE test.name SET level= 5 WHERE level = 1 and ID="'$name'";"
done
正常echo應該顯示↓
UPDATE test.name SET level= 5 WHERE level = 1 and ID='zzz2222344';
UPDATE test.name SET level= 5 WHERE level = 1 and ID='zzz199314';
但確變成

';DATE test.name SET level= 5 WHERE level = 1 and ID='zzz2222344
';DATE test.name SET level= 5 WHERE level = 1 and ID='zzz199314 
結果測試重新編輯一個新的name.txt檔,再次執行確無誤
查看兩個文件的差別
LINUX下指令diff 文件A 文件B 沒有顯示差異,結果使用cat -A [文件名] 查看
[rosalie@224~] # cat -A name.txt              #有問題的檔案
zzz2222344^M$                                     #直接cat 只有 zzz2222344 
zzz199314^M$
zzz2333222^M$
zzz199814^M$ 

[rosalie@224~] # cat -A name_new.txt         #正確的檔案
zzz2222344$
zzz199314$
zzz2333222$
zzz199814$
才發現原本一直斷段的文件,原來多了一個 ^M 
檔案即使用複製的仍會出現問題,所以只好用指令把它去除
[rosalie@224~] # cat name.txt | tr -d ‘\r’ > name_new2.txt
去除後,可發現檔案大小有變,再次套用後執行就沒問題了,
或者可再用cat -A查看!

沒有留言:

張貼留言