自動化運維入門(二)shell中的變數

2021-08-23 12:36:35 字數 3599 閱讀 2192

在shell中,變數分為全域性變數區域性變數指令碼變數三大類。其次,變數的型別只有字串,只有在數字運算的時候直譯器才會把數字解釋成數字。

變數的定義:變數名=變數值

例如:

python@ubuntu:~/desktop$ user=python  # 當前終端定義變數user的值為python
​ 本地變數是:在當前系統的某個環境下才能生效的變數,作用範圍小。

​ 本地變數包含兩種:普通變數和命令變數

普通變數的定義方式有如下三種:

變數名=「變數值」

用來把終端命令的輸出結果儲存到變數中

命令變數有兩種定義方式

python@ubuntu:~/desktop$ list =`ls

`

輸出list結果為ls在命令列查詢後的結果

python@ubuntu:~/desktop$ list =

$(ls

)

注意:命令變數必須是linux中的可執行命令

全域性變數:在當前系統的所有環境下都能生效的變數,如$path

環境是什麼

環境是:每開啟乙個終端是乙個shell環境,使用非source執行方式時,會開啟子程序,也是乙個shell環境,稱為子shell環境。

檢視全域性變數

使用命令 env (# 只顯示全域性變數,主要是載入了~/.bashrc和/etc/profile檔案)

python@ubuntu:~/desktop$ env

xdg_vtnr=7

lc_*****=zh_cn.utf-8

lc_address=zh_cn.utf-8

.....

注意:自定義的全域性變數只能在該終端和該終端啟動的程序中使用

定義變數:變數名=值

全域性變數演示:

python@ubuntu:~/desktop$ env

|grep user # 當前全域性變數中沒有user變數

python@ubuntu:~/desktop$ export user=python3

python@ubuntu:~/desktop$ env

|grep user # 當前全域性變數中有user變數

user=python3

開啟新的終端執行env命令:

python@ubuntu:~/desktop$ env

|grep user # 當前全域性變數中沒有user變數

python@ubuntu:~/desktop$

如果想要自己定義的全域性變數在跟系統的全域性變數一樣在所有環境都有效,需要在~/.bashrc或/etc/profile檔案中定義:

檢視

python@ubuntu:~/desktop$ str1 =

"hello world"

python@ubuntu:~/desktop$ echo

$-bak

hello world-bak

取消變數

內建變數是shell內部提供的一些經常用到的實用功能

如:

python@ubuntu:~/desktop$ touch example.sh
#!/bin/bash

echo

"this is a example"

echo

"filename: $0"

python@ubuntu:~/desktop$ bash example.sh 

this is a example

filename: example.sh

python@ubuntu:~/desktop$ bash example.sh 

this is a example

filename: example.sh

file_pid: 24013

# 獲取當前指令碼傳入的引數數量

echo

"當前指令碼傳入的引數數量是: $#"

# 獲取指定位置的引數

echo

"第乙個位置的引數是: $1"

echo

"第二個位置的引數是: $2"

echo

"第三個位置的引數是: $3"

echo

"第四個位置的引數是: $4"

python@ubuntu:~/desktop$ bash example.sh a b c d e

this is a example

filename: example.sh

file_pid: 24059

當前指令碼傳入的引數數量是: 5

第乙個位置的引數是: a

第二個位置的引數是: b

第三個位置的引數是: c

第四個位置的引數是: d

python@ubuntu:~/desktop$

終端執行命令如下:

python@ubuntu:~/desktop$ bash nihao  # 不存在nihao檔案

python@ubuntu:~/desktop$ bash: nihao: no such file or directory

python@ubuntu:~/desktop$ echo

$?127

python@ubuntu:~/desktop$ ls

file1.sh num.sh test.sh weizhi.sh

python@ubuntu:~/desktop$ echo

$?0

python@ubuntu:~/desktop$ file=

"abcdefg"

# 從第1個字元開始,擷取5個字元

python@ubuntu:~/desktop$ echo

$ abcde

# 從第3個字元開始,擷取5個字元

python@ubuntu:~/desktop$ echo

$cdefg

# 從倒數第5個字元開始,擷取之後的5個字元

python@ubuntu:~/desktop$ echo

$cdefg

如果輸入的引數為空,那麼輸出內容是 「您選擇的**是: ** 1」

如果輸入的引數為n,那麼輸出內容是 「您選擇的**是: ** n」

指令碼內容如下:

#!/bin/bash

# **選擇演示

a="$1"

echo

"您選擇的**是: ** $"

自動化運維Django入門

隨著it運維技術日益更新,近幾年運維自動化越來越火,而且學習python的人非常的火爆,尤其是python自動化運維開發,得到了很多前輩的推崇。這裡我也記錄一下以前學習django的一點點心得和方法,方便以後自己查閱,如果能幫助初學者是最好的了!好的,其他不多說了,博文滴走起。一 系統實戰環境 系統...

運維自動化

1,cobbler安裝環境準備 安裝epel epel release 6 8.noarch.rpm x86 64 epel release 6 8.noarch.rpm x86 安裝系列依賴環境 要是區域網用,建議關閉iptables 或是放行25151 80 69埠 和關閉selinux 檢視狀...

自動化運維

考慮的因素 源 打包為映象 發布到映象庫 利用k8s發布到物理機器執行,以服務的形式對外提供服務 目前的做法 0 建立乙個執行遠端命令的框架 1 每個應用建立乙個部署檔案指令碼 a 指定元 位址 c 同步源 到目標主機 d 接受指令碼引數 vername 2 版本號,映象tag fromport 3...