shell編程
php
shell變量的特色?python
——弱類型shell
——默認字符串型(字符串型是不能直接進行加減乘除數值運算,所以須要進行數值運算時,須要將shell變量聲明爲數值型,不要使用默認值)編程
——能夠把指令寫到一個文件中,shell對這個腳本操做就能夠一次執行多個操做。可是若是一條條執行會很麻煩,shell支持條件控制、循環嵌套特性。vim
說明:數組
必定要在第一行執行解析器,咱們使用的是bash,固然也可使用python、ruby寫腳本。ruby
咱們在學會一個命令時,放在命令行中就是命令,放到腳本中就是一條語句。bash
腳本中命令能夠直接羅列,也能夠包含到函數之中,經過呼叫函數名執行:服務器
命令對空格敏感,腳本語句對空格變態地敏感!函數
腳本語言:
引用第一個sh時,使用$0($表示位置)。$#表明一共多少個參數。
操做:
咱們在執行任意一個腳本程序的時候,並非在這個shell執行,而是新開一個shell,雖然咱們看不到這個shell。
操做:
注:雖然獲得了腳本的目的,可是當前目錄並未改變,也就是說不是在這個shell中執行的操做。
其中vim中語句爲:
若是想在當前shell執行語句:
注:當前工做目錄已經變了。
declare命令
——用來聲明變量類型
格式:
注:在這裏要格外注意,咱們須要添加一個聲明時用「-」,而不是「+」。
舉例:
把變量聲明爲數值型
注:這裏咱們能夠明確看出,在默認狀況下變量爲字符型,所以c默認輸出爲11+22,若是想一想要輸出加法運算的結果,則須要將c聲明爲int類型(a、b不須要聲明爲int,由於聲明c後,在進行a+b運算時會自動將後面進行轉化)。
能夠查看變量屬性:
聲明數組變量
操做:
注:在查看數組的時候,$後面須要添加{},在不加下標,直接以數組名給出時默認顯示第一個數組元素,加上*時,顯示所有。
聲明環境變量
注:環境變量的聲明實際上也是declare命令。-X表示聲明爲環境變量。若是這樣操做:
Export aa,即表示把aa聲明爲環境變量,則在執行bash-->set這兩個指令時只能看到aa,不能看見bb。Bb只會出如今當前目錄。
聲明變量只讀屬性
操做:
注:這裏不能修改和刪除。甚至咱們執行撤銷屬性都不能夠。在實際應用中要格外注意,若是將制度屬性的變量加到某一系統環境變量中在開機時會自啓動,這樣會出錯。咱們這裏設置的是臨時環境變量,系統重啓後消失。所以,只讀屬性並非很好用,實際中儘可能少用。
查看變量屬性
數值運算方式
數值運算方法1
注:這種方法須要敲不少指令,麻煩。
方法2:expr或let數值運算工具
操做:
注:在沒有空格的時候不會進行直接加的運算,而是當作字符串運算。
方法3:」$((運算符))」或」[運算符]」
注:推薦這種寫法」$((運算符))」
區分如下的方式:$(運算符)——它的做用是把系統命令先執行,再把命令的結果賦予變量。
運算符
注:優先級越高數值越大。實際中用到的數值運算並很少。
變量測試
簡介
只針對shell語言有效,比較複雜。在實際中能夠用其餘方式取代,格式複雜,語法簡單,瞭解便可。
注:在優化時用到,好比php寫的網頁腳本,訪問量很大,就須要優化。在實際中shell通常是管理員用(由於咱們的目的就是辦公自動化),因此要求邏輯要清晰,而這種方式並非很適用。
例子1:測試x=${y-新值}
腳本
可是這個腳本有侷限性,就是引入另一個文件再執行這個腳本時不起做用,也就是說這個文件只針對於某一個特定狀況。須要改進:
在tab上方有導引號``,若是在vim中輸入命令:形如’pwd’,導引號就能輸出命令的輸出。
這樣腳本就具備通用型了。
遠程執行
每次都鏈接服務器仍是有點麻煩,咱們能夠在本地執行一個腳本,直接把服務器上的事辦了。
注:引號中的語句就會在服務器中執行。
確認執行:
默認是y。
可是若是有一天咱們刪除了其中一個頗有用的文件,好比jim.txt再執行腳本時:
這時會提示是否刪除刪除這個腳本,這種提示功能很是好。咱們能夠選擇no不刪除。
用其餘語言寫腳本
Bash的語法偏機器思惟。比較晦澀。