作者 主題: Shell Script 的怪現象  (閱讀 6913 次)

0 會員 與 1 訪客 正在閱讀本文。

NetSailor

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
Shell Script 的怪現象
« 於: 2002-07-19 03:27 »
當我在命令提示符號底下直接輸入 echo 1234 > test.txt 的時候,系統會自動幫我建立一個名為 test.txt 的檔案。

可是如果我把上面的指令寫在某個檔案裡面,例如:

#!/bin/bash
echo 1234 > 'test.txt'

然後再執行這個檔案,系統卻會幫我建一個 test.txt? 的檔案出來。

不知這個 '?' 是怎麼來的,百思不得其解。

可以不產生這個 '?' 嗎 ?

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5394
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Shell Script 的怪現象
« 回覆 #1 於: 2002-07-19 09:16 »
在我這兒不會這樣... 並沒有 ? 產生...

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7312
    • 檢視個人資料
Shell Script 的怪現象
« 回覆 #2 於: 2002-07-19 09:26 »
假如是

#!/bin/sh
echo "1234" > test.txt

可不可以?

NetSailor

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
好像快找到答案了
« 回覆 #3 於: 2002-07-19 15:25 »
首先,要謝謝各位熱心的回應。

這個現象目前只發生在 RedHat 7.2 和 7.3 的機器上面,不管有沒有載入中文系統都一樣。

在我的小實驗室裡面,共有四台機器,其中兩台裝的是 Mandrake 8.2 另外兩台則分別為 RedHat 7.2 和 7.3。

有趣的是,這個現象在 Mandrake 的機器上並不會發生。

以往我要刪除測試檔案的時候總是直接下  rm -f My???.??? 的語法,直接強制刪除不要的檔案。可是今天不知怎麼的,在下 rm 指令的時候,一時沒有用到 -f 參數,結果就發現螢幕上出了這個訊息:

rm: remove 'MyText.txt\r'?

也就是說,MyText.txt 後面的那個問號應該是 "/r"。

因為我是用 vi 編的 script,所以我在想會不會是無意間動到了哪一個開關,使得行尾自動會被加上"/r"。

當然,因為我還是肉腳一族,所以上面的問題除了有待更進一步的實驗測試之外,也歡迎前輩們的指導。

NetSailor

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
抱歉! 有筆誤。
« 回覆 #4 於: 2002-07-19 15:30 »
引述: "NetSailor"
首先,要謝謝各位熱心的回應。

這個現象目前只發生在 RedHat 7.2 和 7.3 的機器上面,不管有沒有載入中文系統都一樣。

在我的小實驗室裡面,共有四台機器,其中兩台裝的是 Mandrake 8.2 另外兩台則分別為 RedHat 7.2 和 7.3。

有趣的是,這個現象在 Mandrake 的機器上並不會發生。

以往我要刪除測試檔案的時候總是直接下  rm -f My???.??? 的語法,直接強制刪除不要的檔案。可是今天不知怎麼的,在下 rm 指令的時候,一時沒有用到 -f 參數,結果就發現螢幕上出了這個訊息:

rm: remove 'MyText.txt\r'?

也就是說,MyText.txt 後面的那個問號應該是 "/r"。

因為我是用 vi 編的 script,所以我在想會不會是無意間動到了哪一個開關,使得行尾自動會被加上"/r"。

當然,因為我還是肉腳一族,所以上面的問題除了有待更進一步的實驗測試之外,也歡迎前輩們的指導。


文內所有的 /r 實為 \r 之筆誤。

特此更正。[/quote]

NetSailor

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
報告探長,已經可以確定兇手就是 vi 了。
« 回覆 #5 於: 2002-07-19 15:55 »
前面的 script 改用 KDE 環境下的編輯器編寫就不會再有這個現象了。

所以,現在的問題是:如何緝捕它歸案呢?

也就是要如何才能關閉 vi 裡面這個會自動加 \r 的功能呢?

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5394
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Shell Script 的怪現象
« 回覆 #6 於: 2002-07-19 16:38 »
你的 vi 載入那個檔案時是 [dos] ?
可以你內訂你的 vi fileformat 是 dos ? 改成 unix 就可以.

如果是使用 vim, 在 ~/.vimrc 中如果有
set ff=dos

set fileformat=dos
就表這個移除.

NetSailor

  • 可愛的小學生
  • *
  • 文章數: 12
    • 檢視個人資料
Shell Script 的怪現象
« 回覆 #7 於: 2002-07-19 17:49 »
謝謝 twu2 前輩的指導

引用
你的 vi 載入那個檔案時是 [dos] ?


一開始,檔案就完全是在 linux 環境下編的,所以不是開 dos 檔案出來編的。

引用

可以你內訂你的 vi fileformat 是 dos ? 改成 unix 就可以.

如果是使用 vim, 在 ~/.vimrc 中如果有
set ff=dos

set fileformat=dos
就表這個移除.


我用的是 RedHat 內建的 vi(m),版本為 6.1,因為 vi 才剛接觸,所以尚在摸索。

經查,我的 vi 並沒有在 ~/ 目錄下幫使用者建 .vimrc 檔(請問是否要自己動手建)。

但是在 /usr/share/vim/vim61/macros 目錄下確有個 vimrc 檔。

開啟這個檔案之後,經由字串搜尋,並未發現有 set fileformat= 或 set ff= 的蹤跡。

於是我就自己在檔尾,加了底下這行:

set fileformat=unix

存檔後,重新開啟 vi ,再次編輯之前的 script,然後再執行該 script,結果....

結果,就 OK了。

再次謝謝您。