作死作死,完美主義,又「重寫」了
- 2019 年 10 月 27 日
- 筆記
最開始根據需求寫了執行腳本Dojob。
後來發現執行腳本變動比較頻繁,需要反覆執行dos轉換為unix,於是做了一個DojobH,即支持腳本——包裝了3條固定操作:
1、轉換Dojob從dos到unix,就是移除回車符,生成一個臨時文件DojobUnix
2、執行DojobUnix
3、移除DojobUnix
這樣,可以隨意更改Dojob的主體,然後直接運行DojobH就可以了。H是hero的簡寫哦。
但是發現有了更多的需求,需要寫第二個Dojob2、第三個執行腳本Dojob3,每個執行腳本都要一個H腳本Dojob2H,Dojob3H嗎?
不行。那樣的話,不是又重複寫代碼了?文件也多了起來。
於是又寫了一個腳本,把文件名作為變量,使用了讀取屏幕輸入read方法,使其可通用
1、從屏幕輸入獲取dos文件名
2、執行轉換Dojob從dos到unix,就是移除回車符,生成一個臨時文件DojobUnix
1 #!bin/bash 2 echo 開始:把f/test/的.sh文件從dos轉換為unix風格 3 ls #列出文件列表 4 echo 輸入:f/test/下的.sh文件名,如npcinmapcheck #給予輸入提示 5 read filename #從屏幕輸入讀取dos文件名 6 filenameunix=Unix${filename} #定義unix文件名 7 #rm -i $filenameunix.sh 8 cat $filename.sh | tr -d 'r' > $filenameunix.sh #執行轉換,移除回車符 9 chmod +x $filenameunix.sh #使之可運行 10 11 #部分腳本有特例處理 12 echo 結束:${filename}.sh已經被轉換為${filenameunix}.sh #給予處理結束提示 13 case ${filename} in 14 "DropRate" ) echo ${filenameunix}.sh需進入release/bin/目錄下使用 && cp ${filenameunix}.sh ../expansion_2011winter_quest/bin/${filenameunix}.sh;; 15 "droprate" ) echo ${filenameunix}.sh需進入release/bin/目錄下使用 && cp ${filenameunix}.sh ../expansion_2011winter_quest/bin/${filenameunix}.sh;; 16 *) echo Job is Done ;; 17 esac
但是還是不滿意,為啥咧,因為這相當於複製了一個新文件,會讓文件特別多。於是又增加了兩項處理:
1、轉換後只保留原始文件
2、追加了修改時間批註
另外順手改了其它幾處細節。
1 #!bin/bash 2 echo 開始:把f/test/的.sh文件從dos轉換為unix風格 3 ls #列出文件列表 4 echo 輸入:f/test/下的.sh文件名,如npcinmapcheck.sh #給予輸入提示 5 read filename #從屏幕輸入讀取dos文件名 6 filenameunix=Unix${filename} #定義unix文件名 7 cat $filename | tr -d 'r' > $filenameunix #執行轉換,移除回車符 8 cat $filenameunix > $filename #用unix文件覆蓋dos文件 9 rm -rf $filenameunix #刪除unix文件 10 echo -e 'nnn''#'腳本最後一次修改日期:`date` >> $filename #添加修改批註 11 #部分腳本有特例處理 12 case $filename in 13 "DropRate.sh" ) echo 提醒:${filename}需進入release/bin/目錄下使用 && cp $filename ../expansion_2011winter_quest/bin/${filename};; 14 "droprate.sh" ) echo 提醒:${filename}需進入release/bin/目錄下使用 && cp $filename ../expansion_2011winter_quest/bin/${filename};; 15 *.sh) echo Job is Done ;; 16 esac 17 18 19 #腳本最後一次修改日期:2011年11月 4日 14:44:47
如果修改太頻繁,腳本追加記錄會越來越多啊——不過作為版本歷史用來判斷腳本的變動程度也是可行的。。看情況再說。