shell 變數名稱的開頭是乙個字母或下劃線符號,後面可以接著任意長度的字母、數字或下劃線符號。
shell 變數名稱的字元
長度並無限制。
shell 變數可以用來儲存字串值,所能儲存的字元數同樣沒有限制。
變數的賦值方式為:先寫變數名稱,緊接著 = 字元,最後是新值,中間完全沒有任何空格。當你想取出 shell 變數的值時,需於變數名稱前面加 $ 字元。當所賦予的值內含空格時,**上引號:
first=isaac middle=bashevis last=singer #單行可進行多次賦值
fullname="
isaac bashevis singer"#
值中包含空格時使用引號
oldname=$fullname
#此處不需要引號
不過,當你將幾個變數連線起來時,就需要使用引號了:
fullname="$first $middle $last"#
這裡需要雙引號
$ echonow is the time forall good mennow is the timefor all good men
printf 命令模仿 c 程式庫里的 printf() 程式。它幾乎複製了該函式所有的功能,如果你曾使用c、c++、awk、perl、python 或 tcl 寫過程式,對它的基本概念應該不陌生。當然,它在 shell 層級的版本上,會有些差異。
如同 echo 命令, printf 命令可以輸出簡單的字串:
printf "hello, world\n
"
printf 不像 echo 那樣會自動提供乙個換行符號。你必須顯示地將換行符號指定成 \n 。printf 命令的完整語法分為兩部分:
printf format-string[arguments
...]
第一部分(format-string
)是乙個字串,用來描述輸出的排列方式,最好為此字串加上引號。此字串包含了按字面顯示的字元以及格式宣告,後者是特殊的佔位符,用來描述如何顯示相應的引數。格式宣告分成兩部分:百分比符號(%)和指示符。最常用的格式指示符有兩個,%s 用於字串,而 %d 用於十進位制整數。
第二部分(arguments...)是與格式宣告想對應的引數列表。
格式字串中,一般字元會按字面顯示,轉義序列則解釋後再輸出成相應的字元。格式什麼以 % 符號開頭,並以定義的字母集中的乙個字元來結束,用來控制相應引數的輸出。例如,%s 使用者字串的輸出:
$ printf "the first program always prints '%s, %s!'\n
"hello world
the first program always prints 'hello world!'
shell 提供了數種語法標記,可以用來改變預設 i/o 的**端與目的端。
*以 < 改變標準輸入
program
< file 可將 program 的標準輸入修改為 file:
tr -d '\r' < dos-file.txt
*以 > 改變標準輸出
program > file 可將 program 的標準輸出修改為 file:
tr -d '\r' < dos-file.txt > unix-file.txt
這條命令會先以 tr 將 dos-file.txt 裡的 ascii 回車刪除,再將轉換完成的資料輸出到 unix-file.txt。(dos-file.txt 裡的原始資料不會有變化)。
> 重定向符在目的檔案不存在時,會新建乙個。然而,如果目的檔案已存在,它就會被覆蓋掉;原本的資料都會丟失。
*以 >> 附加到檔案
program >> file 可將 program 的標準輸出附加到 file 的結尾處。
如同 >,如果目的檔案不存在,>>重定向符便會新建乙個。然而,如果目的檔案存在,它不會直接覆蓋掉檔案,而是將程式所產生的資料附加到檔案結尾處:
for f in dos-file*.txtdotr -d '\r' < $f >> big-unix-file
.txt
done
*以 | 建立管道
program1 | program2 可將 program1 的標準輸出修改為 program2 的標準輸入。
tr -d '\r' < dos-file.txt | sort > unix-file.txt
語法
tr [ options ] source-char-list replace-char-list
用途轉換字元。例如,將大寫字元轉換成小寫。選項可讓你指定要刪除的字元,以及將一串重複出現的字元濃縮成乙個。
常用選項
- c取 source-char-list 的反義。tr 要轉換的字元,變成未列在 source-char-list 中的字元。此選項通常與 -d 或 -s 配合使用。
- c與 -c 相似,但所處理的是字元(可能是包含多個位元組的寬字元),而非二進位制的位元組值。
-d自標準輸入刪除 source-char-list 裡所列的字元,而不是轉換它們。
-s濃縮重複的字元。如果標準輸入中連續重複出現 source-char-list 裡的所列的字元,則將其濃縮成乙個。
行為模式
如同過濾器:自標準輸入讀取字元,再將結果寫到標準輸出。任何輸入字元只要出現在 source-char-list 中,就會置換成 replace-char-list 裡相應的字元。posix 風格的字元與等效的字符集也適用,而且 tr 還支援 replace-char-list 中重複字元的標記法。
警告根據 posix 標準的定義,-c 處理的是二進位制位元組值,而 -c 處理的是現行 locale 所定義的字元。
unix 系統提供了兩個對 shell 程式設計特別有用的特殊檔案。第乙個檔案 /dev/null,就是大家所熟知的位桶(bit bucket)。傳說到此檔案的資料都會被系統丟掉。也就是說,當程式將資料寫到此檔案時,會認為它已經成功完成寫入資料的操作,但實際上什麼事都沒做。如果你需要的是命令的退出狀態,而非它的輸出,次功能會很有用。例如,測試乙個檔案是否包含某個模式:
if grep patten myfile > /dev/nullthen
...
#找到模式時
else
...
#找不到模式時
fi
相對地,讀取 /dev/null 則會立即返回檔案結束符號。讀取 /dev/null 的操作很少會出現在 shell 程式裡,不過了解這個檔案的行為模式還是非常重要的。
另乙個特殊檔案為 /dev/tty 。當程式開啟此檔案時,unix 會自動將它重定向到乙個終端 [ 乙個實體的控制台或串列埠,也可能是乙個通過網路與視窗登入的偽終端 ] 再也程式結合。這在程式必須讀取人工輸入時(例如密碼)特別有用。此外,用它來產生錯誤資訊也很方便,只是比較少人這麼做:
printf "enter new password: "#
提示輸入
stty -echo #
關閉自動列印輸入字元的功能
read pass < /dev/tty #
讀取密碼
printf "
enter again: "#
提示再輸入一次
read pass2 < /dev/tty #
再讀取一次以確認
stty echo #
別忘了開啟自動列印輸入字元的功能
#...
stty 命令用來控制終端的各種設定。 -echo 選項用來關閉自動列印每個輸入字元的功能;stty echo 用來恢復該功能。
參考:<
HTML基本元素
段落文字格式化 鏈結影象 列表 區塊元素 span 表單form 框架注釋 水平線標籤定義了文件與外部資源之間的關係,通常用於鏈結到樣式表 為網頁定義描述內容 每30秒鐘重新整理當前頁面 這是乙個段落。這是另外乙個段落。這個段落 演示了分行的效果 插入單個折行 換行 標籤 描述定義粗體文字 定義著重...
HTML基本元素
1.使用宣告格式,否則會亂碼。此部分不區分大小寫,用來告知 web 瀏覽器頁面使用了哪種 html 版本。html5 不是基於 sgml,因此不要求引用 dtd。2.使用html 頁面的根元素,它包括兩個標籤 head和body 3.對於中文網頁需要在head中使用宣告編碼,否則會出現亂碼。有些瀏覽...
C 基本元素
注釋和空白編譯器不會編譯,自動忽略 而標記是可以通過編譯器編譯的。官方定義 關鍵字是類似識別符號的保留的字串行,不能用作識別符號 以 字元開頭時除外 通俗的說 關鍵字,是這門語言已經設計好的識別符號,所以不允許開發者自己定義和關鍵字相同的名字的識別符號。運算子是一種類成員,它定義了可應用於類例項的特...