作者sanbis (方正)
看板Linux
標題[問題] bash 空白行導致 command not found
時間Fri Nov 13 10:42:24 2020
目前 TEST.sh 的內容如下
#!/bin/bash
WORKDIR=backup
echo $WORKDIR
echo "備份程序"
echo "根目錄"
但是在執行 sh TEST.sh 後輸出的結果為
: command not found
backup
備份程序
: command not found
根目錄
中間為了格式打上去的空行被當成無效指令
導致輸出 : command not found
想請問一下有沒有人遇過這種情況
以及這個要怎麼處理?
--
『老闆你好 我是國立的』
『老闆你好 我是私立的』 『腦~~~~~~~闆~~~~~~』 Amy!
◢ ◣有消息會跟你聯絡 ◢ ◣有消息會跟你聯絡 ◢ ◣給她個私人秘書職位
◤ ◥ ◥ ◢ ◤◥ ◥ ◢ ◥◢ ◣ 國立
-○=○- ◤ -□=□- ◤ ◥● ●● ◤ ◥ 私立
◥ ◤ ︶ ◥ ◤ ︶ ● ▼◤ ● ) 尬不過
◢ ◥◣╱
◥ -? ◢ ◣◣╱
◥ - ◢ )●) ▼ ◤ 兩粒
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.125.62.244 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Linux/M.1605235346.A.2CC.html
1F:→ bitlife: 先檢查是否有全形空白 11/13 10:49
2F:→ tomsawyer: windows換行? 11/13 15:01
3F:推 HMKRL: 應該是有不是空白的東西混進去 11/14 00:23
4F:噓 LinBuoRen: dos2unix 11/14 07:21
5F:→ newversion: xxd TEST.sh 賠上來看看 11/14 12:14
6F:推 ucrxzero: Backup被當成指令了啦 11/14 13:36
8F:推 ucrxzero: 你bash是不是連到dash 11/15 02:18
9F:推 holishing: set -x 追追看? 11/15 19:06
10F:→ holishing: 然後在之前不管有沒有 dos 換行都先 dos2unix 11/15 19:07
問題已解決
目前查到的說法是 Windows 的換行是 \r\n
Linux 的換行是 \n
解決的方法有~
1.dos2unix
問題是這個主機上沒有安裝 dos2unix ~Orz
2.改用 vim 編輯
並設定 :set ff=unix
※ 編輯: sanbis (59.125.62.244 臺灣), 11/16/2020 09:18:41
11F:→ Bellkna: sed應該也可以處理這個 11/16 19:23
12F:推 Gold740716: sed 's/\r$//' 11/17 12:27