': 不是一個有效的讀取標識符

': 不是一個有效的讀取標識符

我使用 Notepad++ 並輸入:

    read s
    echo "$s"

輸出是:

<code>':不是有效的標識符</code>

然後我嘗試輸入分號:

read s;
echo "$s"

輸出是:

在此輸入影像描述

我將文件另存為q.sh並使用 cygwin 運行,但我仍然無法使用read運算符,所以我很困惑。我也嘗試過其他編輯器,vi但輸出是相同的。

怎麼了?如何讓它發揮作用?

答案1

構成shell腳本的文字檔是用Notepad++寫的。該編輯器預設將文件儲存為 DOS 文字文件,從 Unix 的角度來看,\r每行末尾有一個多餘的回車符 ( )。這讓人困惑sh

要刪除它:

$ tr -d '\r' <q.sh >q-new.sh
$ mv q-new.sh q.sh

劇本缺少#!-line (如註釋中指出的),但只要您使用明確解釋器(sh q.sh)運行它,就不需要它。

新增行

#!/bin/sh

將使(在chmod +x q.sh)之後運行它的行為與./q.sh使用 運行它完全相同sh q.sh

答案2

如果您可以使用 Notepad++,則另一種轉換 Unix 回車符的方法。在記事本中,繼續:編輯 -> EOL 轉換 -> Unix (LF)

在法語中,它是:Edition -> Convertir les sauts de ligne -> Converti au format Unix (LF)

它可以更快。

相關內容