Linux--變量

變量的定義

  1. 變量即在程序運行過程中它的值是允許改變的量
  2. 變量是用一串固定的字符來標識不固定的值得一種方法
  3. 變量是一種使用方便的佔位符,用於引用計算機內存地址,該地址可以存儲 Script 運行時可更改的程序信息
  4. 在 Shell 中變量是不能永久保存在系統中的,必須在文件中聲明

變量的種類–在 Shell 腳本中

  1. 在 Shell 中變量分爲環境級變量、用戶級變量、系統級變量
  2. 環境級變量只在當前 Shell 中生效, Shell 關閉變量丟失
  3. 用戶級變量寫在用戶的 .bash_profile 配置文件中,只針對當前用戶生效
  4. 系統級變量寫在系統的 /etc/profile 或者 /etc/profile.d 中,對於所有用戶都生效

export

臨時全局系統變量

export a=1

echo $a

1
在這裏插入圖片描述

不聲明臨時全局系統變量

b=1

echo $b

在這裏插入圖片描述

切換用戶測試

1、 su student

echo $a
1
echo $b
無輸出
在這裏插入圖片描述

2、 su - student

echo $a

echo $b

兩次都無輸出

在這裏插入圖片描述

系統級全局變量配置

vim /etc/profile
編輯配置文件
cat /etc/profile | tail -n | head -n 1
a=1
添加 a=1
source /etc/profile
立即生效
echo $a

1
有輸出

在這裏插入圖片描述

切換用戶測試

1、su student

echo $a
1
有輸出
在這裏插入圖片描述

2、 su - student

echo $a
1

在這裏插入圖片描述

用戶級環境變量

只針對當前用戶生效,切換用戶即失效

vim ~/.bash_profile

cat ~/.bash_profile | tail -n 3 | head -n 1

PATH=$PATH:$HOME/bin:/mnt
添加 /mnt ,使 /mnt下面的文件修改爲全局文件
source ~/.bash_profile

a=1
設置變量

在這裏插入圖片描述

vim /mnt/test_a.sh
cat /mnt/test_a.sh | tail -n 1
echo $a
sh test_a.sh
1
正常情況下,未設置用戶級環境變量,腳本只能在當前目錄下執行
設置用戶級環境變量後,可以在任何路徑執行自定義文件

在這裏插入圖片描述

變量名稱的規範

變量名稱中通常包含大小寫字母、數字、下劃線(不是必須)

變量名稱格式

TEST_LINUX

Test_Linux

tesT_Linux

在這裏插入圖片描述

字符的轉譯及變量的聲明

\ 轉譯單個字符

““ 弱引用,批量轉譯 ”“ 中出現的字符或字符串

‘‘ 強引用,批量轉譯 ‘’ 中出現的字符或字符串

‘‘ 與 “” 兩者的區別在於, “” 不能轉譯 “”、"`"、"!"、"$"

${} 變量聲明

使用變量,輸出 *

a=*

echo $a

輸出當前目錄下全部文件

在這裏插入圖片描述

a=\*

添加轉譯符

echo $a

輸出當前目錄下全部文件(轉譯符未生效)

在這裏插入圖片描述

echo '$a'

使用強引用符

輸出爲 $a

echo "$a"

使用弱引用符

輸出爲 *

在這裏插入圖片描述

直接顯示 * 號

echo *

輸出當前目錄下全部文件

在這裏插入圖片描述

echo \*

使用轉譯符

輸出 *

在這裏插入圖片描述

echo ""
echo '

在這裏插入圖片描述

直接顯示 !

echo "!"

echo '!'

在這裏插入圖片描述

直接顯示 ?

echo "?"

echo '?'

在這裏插入圖片描述

直接顯示 \

echo "\"

echo '\'

在這裏插入圖片描述

echo \

echo \\

echo "\\"

echo '\\'

在這裏插入圖片描述

實驗

1、自動創建用戶腳本

vim /mnt/create_users.sh

在這裏插入圖片描述

vim /mnt /userfile

cat /mnt/userfile

user1

user2

user3
在這裏插入圖片描述

cat /mnt/create_users.sh

腳本思路

首先判斷使用者身份是否 root 用戶(只有 root 用戶才能創建用戶)

身份正確,再判斷是否使用所要生成用戶名的文件

身份錯誤,提示使用 root 身份

身份正確,但沒有或者使用錯誤用戶名文件,提示使用正確用戶名文件

兩者判斷正確,開始創建用戶

在創建過程中,發現用戶已存在,提示用戶已存在

在這裏插入圖片描述

測試腳本

sh create_users.sh

未使用用戶名文件,報錯,提示使用用戶名文件

sh create_users.sh 12

報錯,12 文件不存在

sh create_users.sh /mnt/userfile

正確,提示已創建所需要的用戶

在這裏插入圖片描述

sh create_users.sh /mnt/userfile

再次創建,提示已存在用戶

在這裏插入圖片描述

userdel user1

userdel user2

userdel user3

刪除剛創建的用戶

useradd user2

sh create_users.sh /mnt/userfile

提示 user1 建立

提示 user2 已存在

提示 user3 建立

在這裏插入圖片描述

使用 student 身份 執行腳本

提示錯誤

在這裏插入圖片描述

2、創建、刪除系統用戶腳本

vim userctrl.sh

腳本思路

首先判斷 “-c” 創建 、 “-d” 刪除

如果不是 “-c” 或 “-d” 命令時,報錯,提示只有 “-c” 或 “-d” 兩個命令

當使用 “-c” 命令時,彈出對話框輸入用戶名,再次彈出對話框輸入用戶密碼

當用戶存在時,提示用戶已存在

當用戶創建完成時,提示用戶已創建

當用戶密碼創建成功時,提示用戶密碼已生成並退出腳本

當使用 “-d” 命令時,彈出對話框,輸入用戶名,刪除用戶,當用戶刪除後,提示用戶已刪除

如果所輸入的用戶名不在系統用戶內,報錯,提示輸入系統用戶

在這裏插入圖片描述

在這裏插入圖片描述

腳本測試

sh userctrl.sh

腳本後面沒有跟命令,報錯,提示-d 或 -c 命令

在這裏插入圖片描述

sh userctrl.sh -c

創建用戶

leon

用戶名

密碼

提示創建完成

在這裏插入圖片描述

su - leon

exit

在這裏插入圖片描述

sh userctrl.sh -d

leon

刪除用戶

提示已刪除

在這裏插入圖片描述

id leon

在這裏插入圖片描述

別名設置

命令別名就是爲一條命令定義一個命令名,執行這個新的命令名就相當於執行這條命令

創建臨時別名

alias look='cat'

定義臨時別名

alisa
查看別名
在這裏插入圖片描述

cat -n test1

look -n test1
別名定義成功

在這裏插入圖片描述

unalias look

刪除 臨時別名

在這裏插入圖片描述

創建用戶級別名

vim /root/.bashrc

編輯 /root/.bashrc 配置文件

添加 alias look='cat'

source /root/.bashrc

立刻生效

cat -n test1

look -n test1

在這裏插入圖片描述

系統級全局別名

vim /etc/bashrc

source /etc/bashrc

su - student

切換用戶

look -n f1

別名生效

在這裏插入圖片描述

alias look='cat'

在這裏插入圖片描述

命令執行結果設定變量

Hostname=$(hostname)

在這裏插入圖片描述

Hostname=hostname

在這裏插入圖片描述

$?

命令執行完成後產生的退出值(範圍是[0-255])

當$0=0時表示命令執行沒有錯誤輸出

在這裏插入圖片描述

這個值可以用 exit 設置

例如:exit 111

在這裏插入圖片描述

cat test.sh | tail -n 2

在這裏插入圖片描述

Shell 腳本中的函數

腳本中的函數是把一個複雜的語句塊定義成一個字符串的方法

實驗

1、測試所有 ping 網絡可達的主機,並導入/host_ip 文件內

vim ceshiping.sh

腳本思路

判定文件是否存在

沒有存在,生成文件

已存在,提示 重新寫入 、備份 、 略過 三個基本功能

彈出對話框,輸入所需要功能

重新寫入–覆蓋原文件並生成新文件

備份–刪除原文件並生成新備份文件

略過–跳過,什麼都不做

在這裏還需要注意大小寫,無論大寫還是小寫命令都應生效

最後測試 廣播域內的 ip 是否開啓並導入文件內

vim ceshiping.sh

在這裏插入圖片描述

sh -x ceshiping.sh

先判斷沒有 /host_ip 文件

再創建文件並導入廣播域內網絡可達 ip

在這裏插入圖片描述

sh ceshiping.sh

文件已存在

小寫 o 可使用

大寫 o 可使用

o–重新寫入文件

在這裏插入圖片描述

cat /host_ip

在這裏插入圖片描述

sh ceshiping.sh

文件已存在

b–備份

cat /host_ip.bak

在這裏插入圖片描述

sh ceshiping.sh

文件已存在

s–略過,什麼都不做

在這裏插入圖片描述

2、創建用戶及用戶密碼

腳本思路

當用戶存在,提示用戶存在

當用戶不存在,創建用戶及用戶密碼

退出

vim create_user.sh

在這裏插入圖片描述

sh create_user.sh

輸入用戶名

輸入用戶密碼

創建成功

exit

退出

在這裏插入圖片描述

For 循環

For

do

done

for x in a b c
循環條件
do
開啓
echo $x
執行命令
done
完成
字符 a、b、c 依次輸出

在這裏插入圖片描述

for x in seq 1 2 10

do

echo $x

done

seq 1 2 10
設置步長

在這裏插入圖片描述

for x in {1..10}
do
echo $x
done
在這裏插入圖片描述

for x in {10..1}
do
echo $x
done
在這裏插入圖片描述

for x in {a..f}
do
echo $x
done

在這裏插入圖片描述

實驗

1、倒計時

vim daojishi.sh

腳本思路

首先使用循環命令

倒數計數:一秒一顯示

在這裏插入圖片描述

sh daojishu.sh

在這裏插入圖片描述

倒計時在一行顯示,echo -n

在這裏插入圖片描述

在這裏插入圖片描述

While 循環

while

do

done

sh true.sh

首先判斷退出

其次使用 while true 寫一個死循環

最後使用 exit 退出

在這裏插入圖片描述

sh true.sh

leon

leo

zhang

exit

該腳本是一個死循環腳本,沒有判斷 退出 ,無限循環

在這裏插入圖片描述

Until 循環

until

do

done

sh until.sh

首先判斷退出

其次使用 until false 寫一個死循環

最後使用 exit 退出
在這裏插入圖片描述

sh until.sh

gg

asd

exit

該腳本是一個死循環腳本,沒有判斷 退出 ,無限循環

在這裏插入圖片描述

分鐘:秒鐘–倒計時

vim daojishu1.sh

腳本思路

當秒鐘從10開始,走到0時,分鐘由1變爲0

當分鐘變爲0時,秒鐘從59開始,走到0結束

在這裏插入圖片描述

sh daojishu1.sh

分鐘1

秒鐘6

在這裏插入圖片描述

分鐘0

秒鐘57

在這裏插入圖片描述

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