2013年8月23日 星期五

Shell Script

這跟iOS一點關係都沒有, 上面交代叫我寫Shell Script測試東西
從來沒寫過, 上網找資料胡亂Coding出來的, 記錄一下寫出來的東西

這寫出來的東西應該不是很正確, 我看鳥哥那邊教學還要寫啥PATH之類的
(SyntaxHighlighter沒支援Shell Script, 用圖片代替, 直接貼Code版面會很醜:D)

基本上就如註解 然後會跑64次 每次都會產生all_SXCX.out檔案
測試資料名稱裝在arr, 為1 3 5 10 20 30 50 99, 所以會產生
all_S1C1.out, all_S1C3.out ~~ all_S1C50.out, all_S1C99.out
all_S3C1.out, all_S3C3.out ~~ all_S3C50.out, all_S3C99.out
all_S5C1.out, all_S5C3.out ~~ all_S5C50.out, all_S5C99.out
以此類推下去, 會有64種組合

然後每一組合跑完會紀錄跑多久時間, 寫入time.txt

把要跑的檔案以及此shell script都丟到同一目錄下
然後就開terminal.app, 到此檔案目錄下執行sh sh01.sh, 就會開始跑了

不過有個很奇怪的問題, 這寫法我在mac上跑沒問題
可是我用ftp上傳到server之後再遠端連過去執行就一直出錯
不知道server是用啥作業系統

8/27
好吧, 上頭交代說叫我改成要能跑在前幾天我說不能跑在server(linux)下, 找一找資料解決了
問題在於換行符號 ^M, 參考這篇解決的 (很多網路教學都說用 %s^M//g ,  可是老是找不到pattern)
這是文章內容部分節錄出來的
Vim 在处理时内部把所有按照识别出的 ff 所对应的换行符都转换成了 \0,正则中以 \n 匹配,除非你指定命令行选项 '-b' 或者打开文件时使用 ++bin 置位 'binary' 选项,否则你是看不到识别为 dos fileformat 的文件中的 ^M 的,就像你在 Win 下 fopen(file, "rt") 中看不到它一样。

用 cat -v shell.sh 觀察原本寫的shell script可以看到一堆的 ^M , linux不吃這套
進入vi, 然後在命令模式下打 :e ++ff=unix shell.sh
就可以看到那一堆的 ^M 了
然後再用上面講的很多網路教學說的 %s^M//g, 會刪掉^M
重新上傳到linux主機就可以跑了

沒有留言:

張貼留言