shell腳本基礎

shell腳本編程基礎

一.腳本的基本概念

shell腳本:包含一些命令或聲明,並符合一定格式的文本文件

shell腳本格式:首行shebang機制 #!/bin/bash #!/usr/bin/python #!/usr/bin/perl

shell腳本的用途:自動化常用命令

​ 執行系統管理和故障排除

            創建簡單的應用程序

​ 處理文本或文件

創建shell腳本:1.使用文本編輯器來創建文本文件

​ 第一行必須包含shell聲明序列:#! 例:#!/bin/bash

​ 添加註釋以#開頭

             運行腳本

​ 給予執行權限,在命令行上指定腳本的絕對或相對路徑

​ 直接運行解釋器,將腳本作爲解釋器程序的參數運行

​ 腳本的基本結構例:

                CONFIGURATION_VARIABLES 配置變量

​ FUNCTION_DEFINITION 定義函數

​ MAIN_CODE 主要代碼

腳本調試

1.檢測腳本中的語法錯誤

​ bash -n /path/to/som_script

2.調試運行

​ bash -x /path/to/some_script

二.腳本內容

變量

變量:命名的內存空間

作用:可操作的儲存空間                                      類型:字符

​ 1.數據存儲方式 數值:整型,浮點型

​ 2.參與運算

​ 3.表示的數據範圍

Shell中變量命名法則:

1、不能使程序中的保留字:例如if, for
2、只能使用數字、字母及下劃線,且不能以數字開頭
3、見名知義
4、統一命名規則:駝峯命名法

5、用英文名字,並體現出實際

變量賦值:name=‘value’
可以使用引用value
(1) 可以是直接字串:name=“root"
(2) 變量引用:name="$USER"
(3) 命令引用:name=COMMAND
name=$(COMMAND)
變量引用:${name} 或者 $name
" " 弱引用,其中的變量引用會被替換爲變量值
' ' 強引用,其中的變量引用不會被替換爲變量

顯示已定義的所有變量:set
刪除變量:unset name

退出狀態碼

bash自定義退出狀態碼
exit [n]:自定義退出狀態碼
注意:腳本中一旦遇到exit命令,腳本會立即終止;終止退出狀態取決於exit命
令後面的數字
注意:如果未給腳本指定退出狀態碼,整個腳本的退出狀態碼取決於腳本中執行
的最後一條命令的狀態碼

算數運算

bash中的算數運算:

​ +, -, *, /, %取模(取餘), **(乘方),乘法符號有些場景中需要轉義
實現算術運算:

​ 1.let var=算數表達式

​ 2.var =$[算數表達式]

bash有內建的隨機數生成器變量:$RANDOM(0-32767)
示例:生成 0 - 49 之間隨機數
echo $[$RANDOM%50]

條件性的執行操作符
根據退出狀態而定,命令可以有條件地運行
• && 代表條件性的AND THEN
• || 代表條件性的OR ELSE

bash的數值測試
-v VAR
變量VAR是否設置
數值測試:
-gt 是否大於
-ge 是否大於等於
-eq 是否等於
-ne 是否不等於
-lt 是否小於
-le 是否小於等於

bash的字符串測試
字符串測試:
= 是否等於 > ascii碼是否大於ascii碼

< 是否小於
!= 是否不等於
=~ 左側字符串是否能夠被右側的PATTERN所匹配
注意: 此表達式一般用於[[ ]]中;擴展的正則表達式
-z "STRING“ 字符串是否爲空,空爲真,不空爲假
-n "STRING“ 字符串是否不空,不空爲真,空爲假
注意:用於字符串比較時的用到的

Bash的文件測試

存在性測試
-a FILE:同-e
-e FILE: 文件存在性測試,存在爲真,否則爲假
存在性及類別測試
-b FILE:是否存在且爲塊設備文件
-c FILE:是否存在且爲字符設備文件
-d FILE:是否存在且爲目錄文件
-f FILE:是否存在且爲普通文件
-h FILE 或 -L FILE:存在且爲符號鏈接文件

Bash的文件權限測試
文件權限測試:
-r FILE:是否存在且可讀
-w FILE: 是否存在且可寫
-x FILE: 是否存在且可執行
文件特殊權限測試:
-u FILE:是否存在且擁有suid權限
-g FILE:是否存在且擁有sgid權限
-k FILE:是否存在且擁有sticky權限

使用read命令來接受輸入
使用read來把輸入值分配給一個或多個shell變量
-p 指定要顯示的提示
-s 靜默輸入,一般用於密碼
-n N 指定輸入的字符長度N
-d ‘字符’ 輸入結束符
-t N TIMEOUT爲N秒
read 從標準輸入中讀取值,給每個單詞分配一個變量
所有剩餘單詞都被分配給最後一個變量
read -p “Enter a filename: “ FILE

條件選擇if語句
選擇執行:
注意:if語句可嵌套
單分支
if 判斷條件;then
條件爲真的分支代碼
fi
雙分支
if 判斷條件; then
條件爲真的分支代碼
else
條件爲假的分支代碼
fi

if語句

多分支

​ if判斷條件1;then

​ 條件1爲真的分支代碼

​ elif判斷條件2;then

​ 條件2爲真的分支代碼

​ elif判斷條件3;then

​ 條件3爲真的分支代碼

​ else

​ 以上條件都爲假的分支代碼

​ fi

逐條件進行判斷,第一次遇爲“真“條件時,執行其分支,而後結束整個if語句

case

變量引用 in

PAT1)

​ 分支1

​ ;;

PAT2)

​ 分支2

​ ;;

...

*)

​ 默認分支

​ ;;

esac

bash的配置文件
按生效範圍劃分,存在兩類:
全局配置:
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
個人配置:
~/.bash_profile
~/.bashrc

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