首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Shell 腳本 for 循環執行報 "command not found" 的原因排查

     編輯:程式設計綜合問答

問題現象

執行簡單的 Shell 腳本:

#!/bin/bash
for F in 1 2 3 4 5
do
    echo $F
done

輸出卻顯示:

: command not found
1
: command not found
2
...

根本原因

腳本文件保存格式為 Windows 風格 (CRLF, \r\n),而 Linux/Unix 系統要求 Unix 風格 (LF, \n)。
回車符 \r 被 Shell 解釋器當作命令的一部分,導致每行開頭多出一個空命令,報錯 : command not found。

解決方法

方法一:使用 dos2unix 工具(最快)

dos2unix script.sh

方法二:sed 替換

sed -i 's/\r$//' script.sh

方法三:編輯器中轉換

  • VS Code:右下角選擇 "LF" 而非 "CRLF" 保存。
  • Notepad++:編輯 → 文檔格式轉換 → 轉為 Unix 格式。
  • Vim::set fileformat=unix 後 :w。

驗證

轉換後用 cat -A script.sh 檢查,行尾應僅顯示 $(換行符),不應有 ^M(回車符)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved