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 用來恢復該功能。
參考:< 段落文字格式化 鏈結影象 列表 區塊元素 span 表單form 框架注釋 水平線標籤定義了文件與外部資源之間的關係,通常用於鏈結到樣式表 為網頁定義描述內容 每30秒鐘重新整理當前頁面 這是乙個段落。這是另外乙個段落。這個段落 演示了分行的效果 插入單個折行 換行 標籤 描述定義粗體文字 定義著重... 1.使用宣告格式,否則會亂碼。此部分不區分大小寫,用來告知 web 瀏覽器頁面使用了哪種 html 版本。html5 不是基於 sgml,因此不要求引用 dtd。2.使用html 頁面的根元素,它包括兩個標籤 head和body 3.對於中文網頁需要在head中使用宣告編碼,否則會出現亂碼。有些瀏覽... 注釋和空白編譯器不會編譯,自動忽略 而標記是可以通過編譯器編譯的。官方定義 關鍵字是類似識別符號的保留的字串行,不能用作識別符號 以 字元開頭時除外 通俗的說 關鍵字,是這門語言已經設計好的識別符號,所以不允許開發者自己定義和關鍵字相同的名字的識別符號。運算子是一種類成員,它定義了可應用於類例項的特...HTML基本元素
HTML基本元素
C 基本元素