shell下的一些符號問題

2021-07-03 12:50:25 字數 2737 閱讀 2590



今天編寫了乙個測試程式(執行在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號 執行上乙個指令的...