shell指令碼中的變數及應用

adreamchaser剛發表於2020-12-08

1.變數的定義

1)定義本身
變數就是記憶體一片區域的地址

2)變數存在的意義
命令無法操作一直變化的目標
用一串固定的字元來表示不固定的目標可以解決此問題

2.shell指令碼中變數的定義方法

1)環境級別
export westos=1
在環境關閉後變數失效
在這裡插入圖片描述

2)使用者級別
vim ~/.bash_profile
export westos=1
在這裡插入圖片描述

3)系統級別
vim /etc/profile
export westos=1
在這裡插入圖片描述

4)變數名稱
“字元” “_” “數字”
不能用數字開頭
建議:
變數名稱短全用大寫字元
變數名稱長用_區分子類
WESTOS
Westos_Redhat
Westos_Linux

3.變數的轉譯

1)轉譯
\ #轉譯單個字元
“” #弱引用,批量轉譯個數字符 不能轉譯"" “`” “$” “!”
‘’ #強引用

在這裡插入圖片描述

2)宣告
a=1
echo $ab
echo ${a}b
在這裡插入圖片描述
在這裡插入圖片描述

3)變數的陣列
a=(1 2 3 4 5)
echo ${a[0]}
echo ${a[-1]}
echo ${a[*]}
echo ${a[@]}
echo ${a[@]:0:3}
echo ${#a[@]}
create_user.sh userfile
userfile用的使用者會被全部建立
在這裡插入圖片描述
判斷檔案內容是否為空;
是否在root使用者下進行操作;
for迴圈建立檔案中的使用者

在這裡插入圖片描述

4.Linux中命令的別名設定

alias xie=‘vim’ ##臨時設定

在這裡插入圖片描述

輸入命令xie即進入
在這裡插入圖片描述

vim ~/.bashrc
alias xie=‘vim’ ##只針對與使用者生效

在這裡插入圖片描述

vim /etc/bashrc ##針對系統所以使用者生效
alias xie=‘vim’

在這裡插入圖片描述
在這裡插入圖片描述

unalias xie ##刪除當前環境中的alias

在這裡插入圖片描述

5.使用者環境變數的更改

環境變數:
使用者在作業系統時使用到的命令搜尋路徑

設定方式:
~/.bash_profile
export PATH=$PATH:/mnt

在這裡插入圖片描述

/etc/bash_profile
export PATH=$PATH:/mnt

在這裡插入圖片描述

6.利用命令的執行結果設定變數

1)直接利用命令執行結果

$()|``		##優先執行
TEST=`hostname` TEST=$(hostname)

2)指令碼中的傳參
非互動模式:

sh /mnt/test.sh westos linux redhat
$0 is /mnt/test.sh指令碼本身
$1 is westos指令碼後所輸入的第一串字元
$2 is linux指令碼後所輸入的第二串字元
$2 is linux指令碼後所輸入的第三串字元
$* is westos linux redhat指令碼後所輸入的所有字元"westos linux redhat
$@ is westos linux redhat指令碼後所輸入的所有字元’westos’ ‘linux’ ‘redhat’
$# is 3指令碼後所輸入的字串個數

在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述

互動模式傳參:

read WESTOS對westos賦值
read -p “please input word:”輸出提示語
-s隱藏輸入內容

在這裡插入圖片描述

在這裡插入圖片描述

7.指令碼函式

定義:
程式的別名

設定方式:
WORD()
{
action1
action2
}

WORD 在指令碼中就代表action1 action2這兩個動作

sh指令碼檔案時,互動傳參中輸入linux返回westos,輸入westos返回linux,輸入exit退出

在這裡插入圖片描述

相關文章