1. 程式人生 > >shell 指令碼 M-BM- 字元問題

shell 指令碼 M-BM- 字元問題

    昨天寫了一個指令碼,在本地執行,測試很多次,都沒有問題。發給別人,上傳到伺服器,在伺服器上執行就會報錯。懷疑是別人在不同的系統中複製,貼上,出現了格式和編碼的問題。

     於是驗證:
      cat -v 檔名   來檢視,可以輸出不列印的一些特殊字元。發現很多  M-BM-   字元。檔案的空格被加上了 "M-BM-"就是不可見的特殊字元,所以shell指令碼執行時就會報錯找不到命令。

    解決方法:

          可以用sed命令處理一下檔案,命令如下: 


               sed 's/\xc2\xa0/ /g' -i 檔案路徑  

就可以把"M-BM-" 替換成空格。最後可以正確執行

相關推薦

shell 指令碼 M-BM- 字元問題

    昨天寫了一個指令碼,在本地執行,測試很多次,都沒有問題。發給別人,上傳到伺服器,在伺服器上執行就會報錯。懷疑是別人在不同的系統中複製,貼上,出現了格式和編碼的問題。      於是驗證:  

shell指令碼的特殊字元

1. # 註釋作用, #! 除外 此外, 在引數替換 echo ${PATH#*:} 這裡不表示註釋, 數制轉換, 不表示註釋 echo $((2#101011)) 2. ; 命令列分隔符, 可以在一行中寫多個命令. echo hello; echo there 3. ;;

shell指令碼中寫內容出現^M字元

問題: 通過java修改tomcat的catlinda.shl指令碼的內容,插入如下語句:  "if [ \"$1\" = \"start\" -o \"$1\" = \"run\" ]; then export JAVA_OPTS=\"$JAVA_OPTS -Xbootc

一個小坑: -bash: ./backup.sh: /bin/bash^M: bad interpreter: No such file or directory 由於shell指令碼檔案被我在Windows下編輯過,出現上面錯誤的原因之一是指令碼檔案是DOS格式的, 即每一行的行尾以\r\n來標識

    由於shell指令碼檔案被我在Windows下編輯過,出現上面錯誤的原因之一是指令碼檔案是DOS格式的, 即每一行的行尾以\r\n來標識, 使用vim編輯器開啟指令碼, 執行::set ff? 可以看到DOS或UNIX的字樣. 使用se

迴圈刪除程式碼中^Mshell指令碼

#! /bin/bash #echo “start……” #define a function to read all the files in the folder function readfile(){ for file in ls $1 do if [

Linux 上Shell 指令碼執行的一個問題(^M)

為了更好更實時的檢視Linux系統的資源消耗,在網上找到了一個別人寫的Shell,參考 https://www.cnblogs.com/xianhaiyuan/p/6323599.html , 存成檔案後,通過FillZilla傳遞到Linux伺服器上,不了執行時候遇到報錯

Shell指令碼中實現將輸入的字元轉換為*

如果你需要寫一段與使用者互動,且需要輸入一些敏感資訊的(例如:使用者密碼、License等),那麼直接用printf+read的方式,就會把使用者輸入的資訊顯示在螢幕了,這是不符合資訊保安的,而且對客戶體驗來說也顯得不夠專業,所以就需要將使用者輸入的密碼轉換為*,樣式如下: please input

shell 指令碼統計資料夾下所有檔案的字元

最近寫了一些文章存放在一個資料夾下,今天想看看自己到底寫了多少內容。於是想寫一個指令碼來進行統計。最終程式碼如下: #!/bin/bash files=$(ls) all=0 for i in

shell指令碼expect命令send特殊字元

http://expect.sourceforge.net/FAQ.html#q54 可以用od命令檢視要傳送的字元, 1. od -c 2.輸入字元,如ctrl+],回車 3.ctrl+D 螢幕會顯示如下內容: ^] 0000000 035  \n 0000002 其

shell指令碼:批量修改檔名(刪除檔名中字元)

上一篇寫過批量修改檔名(檔名中新增字元),工作中還存在這樣的需求,批量修改檔名,刪除檔名中的某些字元; 舉例如下:批量改名,刪除檔名中多餘字元 目錄下檔名為如下,要求去掉_finished。 stu_102999_1_finished.jpg stu_10

Linux系統命令及Shell指令碼學習筆記五:字元處理

管道 管道可以把一個命令的輸出內容當作下一個命令的輸入內容,兩個命令之間只需要使用管道符號連線即可,由管道連線起來的程序可以自動執行。 ls -l /etc/init.d | more 檢視目錄下檔案的詳細資訊,但會因為輸出內容過多而造成翻屏,先輸出的內容就會看不到了,利用

shell指令碼【符號4】萬用字元的使用

這篇部落格介紹1、萬用字元的使用,用於對“檔案”的檢索2、“[ ]”和“[[ ]]” 的其它用法(作為test命令的簡寫) 萬用字元: *  ?  [ ]     [ !  ]    [^   ]正文:一:使用元字元進行模式匹配,搜尋檔案    ⒈ 按照匹配的字元數量,這些萬

linux的shell指令碼的萬用字元使用方法

#!/bin/bash #author: ***** #date : #Email : ****@*** # 萬用字元 # # ? 任意單個字元 # * 任意0個或多個字元 # [ ] 匹配

shell指令碼報錯:-bash: xxx: /bin/sh^M: bad interpreter: No such file or directory

今天寫了一個shell指令碼,然後在執行的時候報錯,指令碼內容很簡單,僅供測試: Shell程式碼   #!/bin/sh   echo "test shell "   具體報錯資訊如下: Shell程式碼   [root@localhost test]# ./test.sh    -b

shell指令碼——更改引數名中間的某個字元

if [[ "${app_name}" =~ '-' ]]; then echo -e "工程名中包含“-”字元需要改動\n" app_name=${app_name/-/_} else echo -e "沒有包含"-"" fi如果傳入的引數 ${app_name}中

【轉】通過ionice和nice降低shell指令碼執行的優先順序

對於一些執行時會造成系統滿載的指令碼, 例如資料庫備份, 會影響當時其他服務的響應速度, 可以通過ionice和nice對其IO優先順序和CPU優先順序進行調整例如降低"/usr/local/bin/backup.sh"的IO優先順序, 讓其他程序順暢執行: /usr/bin/ionice -c2 -

shell指令碼 序列 併發問題

首先,如果只執行一個shell指令碼,那麼shell指令碼執行時是序列的,是從頭執行到尾的。 而且,如果在指令碼中,如果執行內部的shell函式,或者中途連線資料庫進行操作,這個過程也是序列的,不執行完這一條,不執行下一條語句。 但是,如果執行多個shell指令碼,可以併發執行,可以通過

shell指令碼 顯示檔案大小 顯示執行時間

顯示大小 echo $file size=`stat -c "%s" $file` 顯示執行時間 starttime=`date +'%Y-%m-%d %H:%M:%S'` endtime=`date +'%Y-%m-%d %H:%M:%S'` start_seconds

shell指令碼除錯心得

1 將指令碼產生的結果檔案和臨時檔案放入自己的資料夾下,不要放在原來的地方,好一起檢視 2 在除錯的時候,可以吧臨時檔案的刪除命令註釋掉,檢視臨時檔案具體的生成形式 3 在除錯的不明白的地方 用echo $var 4 用日誌txt,儲存echo的記錄和錯誤記錄 sh /xusywap.s

[shell指令碼筆記]基礎/變數

一些基礎用法 #! /bin/bash 宣告使用的shell名稱 exit 0正常退出,exit 1錯誤退出 shell指令碼內增加一行set -x,在執行shell指令碼時($sh -x run.sh),會打印出每一行命令的返回值,從而便於進行除錯。 變數 例子:用於判斷上一步的結果執行正確再執行下