shell指令碼程式設計之變數簡介及指令碼執行過程

2022-08-10 06:18:18 字數 1814 閱讀 6454

變數型別:字元型、數值型、真、假;事先確定資料的存放格式和長度;

變數存放在記憶體空間;

編譯型語言,沒有額外的處理邏輯,屬於強型別語言;

指令碼型語言,可以有直譯器控制;所以,可以是弱型別語言;

強型別:變數在使用前,必須事先宣告,甚至還需要初始化(給乙個初始值,如果沒給乙個原始值,裡面是隨機數);

弱型別:變數用時宣告,甚至不需要區分型別(預設為字串);

變數賦值:var-name=value;

bash shell變數型別:

環境變數

本地變數(區域性變數),區域性變數不一定都是本地變數

位置變數

特殊變數(bash shell內建的;系統變數)

本地變數:var-name=value;作用域為整個bash程序;

區域性變數:local var-name=value;作用域為當前**段;

環境變數:export var-name=value;作用域為當前shell程序及其子程序;

位置變數:$1(第乙個位置變數)、$2(第二個位置變數)...

執行bash shell指令碼,就相當於執行乙個程序,如果程序關閉,則變數就無效了;

指令碼在執行時,會啟動乙個當前shell的子shell程序;命令列中啟動的指令碼會繼承當前shell環境變數;系統自動執行的指令碼(非命令列啟動)就需要自我定義需要的各環境變數;

變數引用:$,當變數名不造成混淆時,括號可省略;

撤銷變數:unset var-name(不要加$符號);

檢視當前shell中的變數:set(包括環境變數和本地變數);

檢視當前shell中的環境變數:export、printenv、env;

變數預設都屬於字串,要想使變數變成整數型變數需要使用:let var=number

往原有變數中新增新的數值:

[root@localhost ~]# animals=pig

[root@localhost ~]# echo $animals

pig[root@localhost ~]# animals=$animals:goat

[root@localhost ~]# echo $animals

pig:goat

注意:1、變數名稱只能包含字母、數字和下劃線,並且不能以數字開頭

2、不能和系統中已有的環境變數重名

3、最好做到見名知意

指令碼:命令的堆砌,按實際需要,結合命令流程控制機制實現的源程式;

指令碼中放的都是命令,並不是可執行的程式,不是對應的二進位制符號,所以直接提交到核心執行的話,核心是理解不了指令碼中的命令的,核心理解的是elf格式;

要想核心能夠讀懂指令碼,需要核心開啟指令碼直譯器,新增shebang機制;

在指令碼中的第一行新增:#!/bin/bash 指定直譯器的位置;

shebang:指定程式的魔數;

寫完的指令碼需要加執行許可權才能執行,或者使用直譯器執行:bash script-name;指令碼名需要以 .sh 為字尾;

輸出重定向:

>:輸出覆蓋重定向

>>:追加重定向

2>:錯誤重定向

2>>:錯誤追加重定向

&>:同時重定向

/dev/null:軟體裝置,資料黑洞,可以把命令的輸出結果放到資料黑洞裡面,不在螢幕上列印

執行指令碼時,要想命令的執行結果不在螢幕上列印可以使用重定向配合資料黑洞:&>/dev/null

Shell程式設計之變數

一.什麼是變數與變數分類 bash 中預設型別為字串型 使用者自定義變數 變數自定義的 環境變數 儲存的是和系統操作環境相關的資料,可以自定義,但是對於系統生效的環境變數名是固定的 位置引數變數 這種變數主要是用來向指令碼當中傳遞引數或資料的,變數名不能自定義,變數作用是固定的 預定義變數 是bas...

shell程式設計之變數

shell程式設計之變數 linux shell程式設計基礎中的變數。包括bash變數的分類和各變數的詳細使用,如 使用者自定義變數 環境變數 語系變數 位置引數變數和預定義變數。1 什麼是bash變數?變數 計算機記憶體單元,其中存放的值可以更改!bash變數就bash中的變數2 變數有哪些分類,...

shell程式設計之變數賦值

1.變數賦值 name lbg 等號前後不能有空格 name lebron james 變數值中有空格要用雙引號 echo 用 更保險 shopt s o nounset 設定 先宣告再使用 2.取消變數 unset 釋放變數和函式的記憶體3.位置引數 輸入的第n個引數 0表示指令碼名字 輸入引數的...