基本shell指令碼的邊界及變數 前行

2022-09-23 06:33:06 字數 2447 閱讀 5429

shell指令碼與變數

shell指令碼的用途:

自動化常用命令

執行系統管理和故障排除

建立簡單的應用程式

處理文字或檔案

shell指令碼編寫格式:

第一行:shebang機制 用#加shell型別開頭

後續可直接跟命令,用命令達到需要的效果即可

如需內容注釋行首加#即可 例如:

#/bin/bash #testcat /etc/passwd  shell指令碼執行方法:

bash /絕對路徑

加入$path變數,給指令碼檔案新增執行許可權,然後直接輸入指令碼檔名即可執行

cat /指令碼路徑 | bash  ;檢查指令碼語法是否錯誤的方法:

bash -n 加指令碼檔名: 檢查語法是否錯誤,如有錯則列印至終端

bash -x 夾指令碼檔名: 逐步執行指令碼,如遇到錯誤則終止並報錯

shell變數: 變數是指用乙個熟悉的,或者意義明顯的單詞、位元組來給變數另起乙個名字,達到每次使用變數名就可以是其本身作用發揮的功能   shell變數命名法則:

不能使用程式中的保留字 (內部命令)

只能使用數字、字母、下劃線,且不能以數字開頭

見名知意

統一命名規則:駝峰命名法   命名建議: 1. 變數名大寫

區域性變數小寫

函式名小寫

用英文單體、體會實際作用 

shell賦值 x=y

例如:

[root@centos6 ~]:name=`hostname`

[root@centos6 ~]:echo $name

centos6.localdomain hostname本身是乙個命令,功能是可以列印出主機名,這裡給hostname定了乙個變數為name ,所以列印 $name 就可以直接顯示出主機名了。  這裡注意因為hostname本身是乙個命令,所以定變數的時候需要用``引起來,才能夠辨別出命令。  同樣的方法也可以用變數來定義另外乙個變數,這個時候就需要用""引起來,是可以辨別變數的,同時引號內需要加變數符號$ ""不加一般也可以,但是變數符$必須加上才能夠辨別  如果定義乙個字元,本身字元就是乙個變數或者命令,可以用''引起來,不辯別任何變數和命令,和什麼都不加效果一樣   以上為普通變數,不可傳遞給子程序   另有環境變數以及位置變數、唯讀變數     環境變數:可傳遞給子程序 環境變數賦值的兩種簡單方法 :

[root@centos7 ~]:export name=`hostname`

[root@centos7 ~]:declare -x name=`hostname`用nev命令或export可顯示所有環境變數。

環境變數一般主要用途在於,定義的環境變數可以在編輯檔案、寫指令碼的介面也可以用  

唯讀變數:故名思意,只能宣告及顯示,不可修改和刪除 唯讀變數賦值:

readonly name=`hostname`

或 declare -r name=`hostname`readonly -p 命令可以顯示所有定義了的唯讀變數    位置變數:位置變數一般在一些shell指令碼中使用 ,一般shell有自帶唯讀變數$1,$2,$3··· $*,$#,$0

$1 指指令碼後跟的第乙個引數、

$2 指指令碼後跟的第二個引數,以此類推

$* 指指令碼後跟的所有引數

$# 指指令碼後跟的引數個數

$0 指指令碼本身的絕對路徑例如

[root@centos7 data] cat /data/shell.sh

echo $1

[root@centos7 data] bash /data/shell.sh centos6

centos6/data/shell.sh是乙個指令碼,功能是列印出$1,而$1是乙個位置變數,表示指令碼後跟的第乙個引數centos6 ,所以指令碼實現的功能就是列印centso6    還有一些系統本身的特殊變數:

$$ 程序本身pid

$pathpid 程序本身pid

$ppid 父程序pid

$_ 上乙個命令的結果以上普通變數、環境變數、唯讀變數賦值只本次登陸生效,如需永久生效需寫入配置檔案: 全域性生效: /etc/profile 只對單個賬戶生效: ~/bash_profile

補充一些括號以及引號的用法: '' 單括號,最單純的引號,不辯別命令,也不辯別變數 "" 雙括號 稍微聰明一點 可以辨別變數,但不辯別命令 `` 反向單引號 ,最聰明的引號,可以辨別變數,也辨別命令  引用命令也可以用$( ) ( )中括號,可以在中括號內命名變數,然後跟子命令,只對括號內的子命令生效 花括號,在花括號內命令變數,無需子命令,後續也繼續生效  

至此

shell指令碼(變數)

1 定義及賦值 格式 變數名 變數值 等號兩邊沒有空格 2 引用 檢視 變數 格式 變數名 例 title shaodianlingxing echo title 輸出 shaodianlingxing 3 雙引號 功能 允許引用 轉義 例如 echo title group 輸出 shaodian...

shell指令碼 變數

1 shell 指令碼中變數分為三種,區域性變數,環境變數,shell變數。區域性變數 定義在函式內部 基本型別 local num hello world 區域性變數在指令碼或命令中定義,僅在當前shell例項中有效,其他shell啟動的程式不能訪問區域性變數。如果同名,shell函式定義的loc...

shell指令碼變數

環境變數和本地變數,環境變數是具有全域性屬性的。在互動式shell下面定義變數 value 100 這定義的即為本地變數,如果要將其變成環境變數則需要export value 匯出環境變數,取消環境變數則可以使用unset命令。環境變數是可以被子程序繼承的更是可以被子子孫孫都繼承的。環境變數在程式替...