學習筆記-5.2 shell編程1

shell編程


編譯器 解釋器


編程語言: 機器語言 彙編語言 高級語言


靜態語言:編譯型語言

   強類型(變量)

   事先轉換成可執行格式 

   C C++ JAVA C#  


動態語言:解釋型語言

   弱類型

   邊解釋邊執行

   PHP SHELL Python perl


bash:(解釋器本身是靜態語言開發的)


面向對象 JAVA Python perl C++

面向過程 shell C


變量類型:事先定義數據的存儲格式和長度

   字符

   數值

       整型

       浮點型:11.23 1.123*10^1

   布爾型


邏輯: 1 + 1 > 2

邏輯運算:與 或 非 異或(相同爲0)

1:真

0:假


整型:8bit:256

      16bit:

      32bit:

      64bit


變量:內存空間 命名


內存:編址的存儲單元


進程:

1+100


編程能力:

    腳本編程


shell:弱類型編程語言


強:變量在使用前,必須事先聲明,甚至還需初始化:

    NULL:

弱: 變量用時聲明:甚至不區別類型


變量賦值:VAR_NAME = VALUE


bash變量類型:

   環境變量

   本地變量(局部變量)

   位置變量

   特殊變量


本地變量:

(set 省略)VARNAME = VALUE:作用域爲整個bash進程


局部變量:

local VALUENAME = VALUE,作用域爲當前代碼段


環境變量:作用域爲當前shell進程及其子進程

export VARNAME = VALUE  

VARNAME = VALUE

export VARNAME

  “導出”


位置變量:

$1,$2,...


特殊變量:

$?:上一個命令的執行狀態返回值


程序執行,可能有兩類返回值:

             程序執行結果

             程序狀態返回代碼(0-255)

                  0:正確

              1-255:錯誤執行,系統預留:1,2,127


  每執行一個命令,後面緊跟一個執行echo $? ,狀態返回代碼


輸出重定向:

> >> 2> 2>> &>

/dev/null 軟件設備,bit bucket,數據黑洞


撤掉變量

unset VARNAME 撤銷變量


查看當前shell中的變量:

set

包括環境變量和本地變量


查看當前shell中的環境變量

printenv

env

export


# ANIMALS = pig

# ANIMALS = $ANIMALS:goat


# A = 2

# B = 2

# C = $A + $B

# echo $C

2+3


腳本:命令的堆砌,按實際需要,結合命令流程控制機制實現的源程序

1 nano fist.sh #!(shebang指定程序的魔數)

 #!/bin/bash(第一行)

 #註釋行,

  cat /etc/fstab

  ls /var


bash first.sh 不用給執行權限(好像也沒指定路徑)


腳本在執行時會啓動一個子shell進程(pstree)

   命令行中啓動的腳本會繼承當前shell環境變量

   系統自動執行的腳本(非命令行啓動)就需要自我定義需要各環境變量


    bash:


引用變量: $(VARNAME),括號有時可省略


雙引號弱引用,其內的字符串做變量替換

單引號強引用,其內的字符串不做變量替換


練習:寫一個腳本,完成以下任務

1 添加5個用戶,user1,...,user5

2 每個用戶的密碼同用戶名,而且要求,添加密碼完成後不顯示passwd

  命令的執行結果信息

3 每個用戶添加完成後,都要顯示用戶某某已經成功添加


練習:寫一個腳本,完成以下任務

1 使用一個變量保存一個用戶名:

2 刪除此變量中的用戶,且一併刪除其家目錄

3 顯示"用戶刪除完成"類的信息







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章