Shell編程

shell編程
php

shell變量的特色?python

——弱類型shell

——默認字符串型(字符串型是不能直接進行加減乘除數值運算,所以須要進行數值運算時,須要將shell變量聲明爲數值型,不要使用默認值)編程

——能夠把指令寫到一個文件中,shell對這個腳本操做就能夠一次執行多個操做。可是若是一條條執行會很麻煩,shell支持條件控制、循環嵌套特性vim


說明:數組

指定解析器

必定要在第一行執行解析器,咱們使用的是bash,固然也可使用python、ruby寫腳本。ruby

語句即命令

咱們在學會一個命令時,放在命令行中就是命令,放到腳本中就是一條語句。bash

腳本中命令能夠直接羅列,也能夠包含到函數之中,經過呼叫函數名執行:服務器

 

命令對空格敏感,腳本語句對空格變態地敏感!函數

位置參數

腳本語言:

引用第一個sh時,使用$0($表示位置)。$#表明一共多少個參數。

操做:

腳本不在當前shell執行

咱們在執行任意一個腳本程序的時候,並非在這個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

注:這種方法須要敲不少指令,麻煩。

方法2exprlet數值運算工具

操做:

注:在沒有空格的時候不會進行直接加的運算,而是當作字符串運算。

 

方法3:」$((運算符))」或」[運算符]

注:推薦這種寫法」$((運算符))」

區分如下的方式:$(運算符)——它的做用是把系統命令先執行,再把命令的結果賦予變量。

 

 

運算符

注:優先級越高數值越大。實際中用到的數值運算並很少。

變量測試

簡介

只針對shell語言有效,比較複雜。在實際中能夠用其餘方式取代,格式複雜,語法簡單,瞭解便可。

注:在優化時用到,好比php寫的網頁腳本,訪問量很大,就須要優化。在實際中shell通常是管理員用(由於咱們的目的就是辦公自動化),因此要求邏輯要清晰,而這種方式並非很適用。

例子1:測試x=${y-新值}

 

 

循環控制

腳本

 

可是這個腳本有侷限性,就是引入另一個文件再執行這個腳本時不起做用,也就是說這個文件只針對於某一個特定狀況。須要改進:

在tab上方有導引號``,若是在vim中輸入命令:形如’pwd’,導引號就能輸出命令的輸出。

這樣腳本就具備通用型了。

 

遠程執行

每次都鏈接服務器仍是有點麻煩,咱們能夠在本地執行一個腳本,直接把服務器上的事辦了。

注:引號中的語句就會在服務器中執行。

 

確認執行:

默認是y。

可是若是有一天咱們刪除了其中一個頗有用的文件,好比jim.txt再執行腳本時:

 

這時會提示是否刪除刪除這個腳本,這種提示功能很是好。咱們能夠選擇no不刪除。

 

用其餘語言寫腳本

Bash的語法偏機器思惟。比較晦澀。

相關文章
相關標籤/搜索