今天編寫了乙個測試程式(執行在linux環境下),其中要將一些命令字串預先儲存在乙個檔案中,然後測試程式從檔案中讀取這些命令串。這些命令串中,欄位與字段之間是用「\t」分隔符分開,每個命令串的結束,還要用「\r\n」結尾。
開始時,我只是簡單的將這樣的命令串,比如「305\t00:14:22:9c:22:9b\t10.1.10.17\t\r\n」直接儲存到檔案中。但是執行測試程式的時候,命令格式總是提示錯誤。我剛開始以為是從檔案中讀取命令串的函式有問題,但是經過反覆試驗,發覺不是讀取檔案的問題。通過將讀取的字串的每個字元列印顯示,才突然想到,原來是這個分隔符在檔案中就是以單獨的字元存放的,而不是他們代表的意思了。(即「\t」就是'\'和't',而不是tab鍵)
既然找到了問題所在,那就在檔案中儲存的時候,就直接鍵入tab鍵和回車鍵。但是,在linux下的回車鍵只代表「\n」,而在windows下的回車鍵才表示「\r\n」,所以,將這個命令串檔案先在windows下建好,再傳到linux下,這樣,終於將問題解決了。
echo的用法 (鳥哥私房菜300頁)
功能說明:顯示文字。
語 法:echo [-ne][字串]或 echo [--help][--version]
補充說明:echo會將輸入的字串送往標準輸出。輸出的字串間以空白字元隔開,並在最後加上換行號。
參 數:-n 不要在最後自動換行
-e 若字串中出現以下字元,則特別加以處理,而不會將它當成一般文字輸出:
\a 發出警告聲;
\b 刪除前乙個字元;
\c 最後不加上換行符號;
\f 換行但游標仍舊停留在原來的位置;
\n 換行且游標移至行首;
\r 游標移至行首,但不換行;
\t 插入tab;
\v 與\f相同;
\\ 插入\字元;
\nnn 插入nnn(八進位制)所代表的ascii字元;
--help 顯示幫助
--version 顯示版本資訊
每乙個shell支援的echo指令可能都不太相同。
-n 不輸出最後的\n
-e解釋轉義字元
-e不解釋轉義字元
示例:echo "i am a boy" // 執行後會列印 i am a boy
i am a boy
read用法(鳥哥私房菜310頁)
read命令:
read 命令從標準輸入中讀取一行,並把輸入行的每個欄位的值指定給 shell 變數
1)read後面的變數var可以只有乙個,也可以有多個,這時如果輸入多個資料,則第乙個資料給第乙個變數,第二個資料給第二個變數,如果輸入資料個數過多,則最後所有的值都給最後乙個變數
-p read –p 「提示語句」,則螢幕就會輸出提示語句,如下圖
當變數個數和輸入個數一樣時:
注意空格,要不會出錯
當變數個數和輸入個數不一樣時,即輸入個數比變臉個數多,則多的都賦給最後乙個變數:
2)命令計數
-nread –n 個數
設定read命令計數輸入的字元。當輸入的字元數目達到預定數目時,自動退出,並將輸入的資料賦值給變數
看一下cc.sh指令碼的內容:
read –n 1的意思是只接受乙個字元
執行
這裡輸入y後不用回車,自己就執行
3)等待時間
-t 時間
read –t 時間
使用read命令存在著潛在危險。指令碼很可能會停下來一直等待使用者的輸入。如果無論是否輸入資料指令碼都必須繼續執行,那麼可以使用-t選項指定乙個計時器。-t選項指定read命令等待輸入的秒數。當計時滿時,read命令返回乙個非零退出狀態;
看一下cc.sh指令碼的內容:
執行cc.sh然後等待超過5s,發現自動退出了
4)關閉回顯
-sread –s
-s選項能夠使read命令中輸入的資料不顯示在監視器上(實際上,資料是顯示的,只是read命令將文字顏色設定成與背景相同的顏色),比如密碼
看一下cc.sh的指令碼內容
執行,看到輸入密碼的時候螢幕不顯示
6)從文字讀取內容並且賦給變數
一些shell符號
傳遞到指令碼的引數個數 以乙個單字串顯示所有向指令碼傳遞的引數,與位置變數不同,此選項引數可超過9個 指令碼執行的當前程序id號 後台執行的最後乙個程序的程序id號 與 相同,但是使用時加引號,並在引號中返回每個引數 顯示shell使用的當前選項,與set命令功能相同 顯示最後命令的退出狀態。0表示...
shell的一些符號
string string command 輸入輸出重導向 2 2 2 井號 comments 這幾乎是個滿場都有的符號。bin bash 井號也常出現在一行的開頭,或者位於完整指令之後,這類情況表示符號後面的是註解文字,不會被執行。this line is comments.echo a a a ...
shell 一些符號的使用
給你個全的,你在linux環境下多試下就明白了 0 這個程式的執行名字 n 這個程式的第n個引數值,n 1.9 這個程式的所有引數,此選項引數可超過9個。這個程式的引數個數 這個程式的pid 指令碼執行的當前程序id號 執行上乙個背景指令的pid 後台執行的最後乙個程序的程序id號 執行上乙個指令的...