shell腳本的學習:shell
1.Shell的做用是解釋運行用戶的命令,用戶輸入一條命令,Shell就解釋運行一條,這樣的方式稱爲交互式(Interactive),Shell還有bash
一種運行命令的方式稱爲批處理(Batch),用戶事先寫一 個Shell腳本(Script),當中有很是多條命令,讓Shell一次把這些命令運行完,而函數
沒必要一條一條地敲命令。post
2.shell變量包含環境變量和本地變量,環境變量可以從父進程傳給子進程,printenv可打印出來;本地變量僅僅存在於當前學習
Shell進程,用set命令可以顯示當前Shell進程中定義的所有變量(包含本地變量和環境變量)和函數。spa
3.變量引用:在Shell中定義或賦值一個變量:VARNAME=value;變量引用的形式爲${}, 變量引用的語句大概例如如下:命令行
當中:env | grep xxx 可以查看一個環境變量,export可以講一個變量導入爲環境變量code
4.文件名稱代換:blog
通配符 * : 匹配0個或多個隨意字符
? : 匹配一個隨意字符
[若干字符] : 匹配方括號裏隨意一個字符的一次出現進程
5.命令替換
` 或 $():由反引號括起來的也是一條命令,Shell先運行該命令,而後將輸出結果立馬代換到當前命令行中。算術代換$(())
用於算術計算,$(())中的Shell變量取值將轉換成整數,$(())中僅僅能用+-*/和()運算符,並且僅僅能作整數運算
6.轉義字符 \
主要建立了使用‘$’ 和‘ -’做爲文件名稱的時候很是麻煩,但是咱們可以經過例如如下:
7.‘’和 「」的差異
和C語⾔言不同,Shell腳本中的單引號和雙引號同樣都是字符串的界定符,而不是字符的界定符。單引號用於保持引號內所有
字符的字面值,即便引號內的\和回車也不例外, 但是字符串中不能出現單引號;雙引號⽤用於保持引號內所有字符的字⾯面值(回車
也不例外),但有些狀況除外。
可以參照下例:
最後咱們談一談shell是怎麼運行的吧:
shell是經過fork/exec去運行的,每次運行一條命令的時候都是經過fork出一個子進程去運行的,而父進程等待子進程運行完才運行的。
因此我可以知道一個很是有趣的現象。咱們有例如如下腳本:
#!/bin/bash pwd cd .. pwd
這就說明shell會fork子進程去運行命令。只是咱們也可以不讓shell產生子進程,這是咱們可以這樣作:
因爲 "."是內建命令。它會是shell不產生子進程而去運行。關於內建命令可本身去查找一下,挺多的。
好了,shell腳本的基本符號我介紹完了,確實比較有限。關於其它內容我會在接下來的博客在進行介紹。關於符號的相關知識你們可以
查閱一些資料或參考一些書籍在強化一下,我說的這些知識常見的一些而已。