Shell程式設計規範與變數
shell程式設計規範與變數
一、Shell指令碼概述
1.1 Shell的作用-1
■ shel的作用—命令直譯器,“翻譯官”
介於系統核心與使用者之間,負責解釋命令列
1.2 Shell的作用-2
■ 使用者的登入Shell
登入後預設使用的shell程式,一般為/bin/bash
不同shell的記憶體指令、執行環境等會有所區別
[root@localhost -]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologi
1.3 編寫第一個shell指令碼-1
■ 編寫指令碼程式碼
使用vim文字編輯器
每行—條Linux命令,按執行順序依次編寫
[root@localhost ]# vim first.sh
cd /boot/
pwd
Is -Ih vml*
■ 賦予可執行許可權
使指令碼具有可執行屬性
[root@localhost -]# chmod +x first.sh
1.4 編寫第一個shell指令碼-2
■ 執行指令碼檔案
方法指令碼檔案路徑(絕對路徑與相對路徑)
[root@ local host ]# ./first.sh
方法二:sh指令碼檔案路徑
[root@localhost] # sh first.sh
方法三:source指令碼檔案路徑
[root@localhost] # source first.sh
1.5 編寫第一個shell指令碼-3
■ 更完善的指令碼構成
指令碼宣告
註釋資訊
可執行語句
[root@localhost ]# vim /first.sh
#!/bin/bash
# This is my first Shell-Script,
cd /boot
echo "當前的目錄位於:"
pwd
echo "其中以vml開頭的檔案包括: Is -lh vml*
1.6 重定向與管道操作-1
■ 互動式硬體裝置
標準輸入:從該裝置接收使用者輸入的資料
標準輸出:通過該裝置向使用者輸出資料
標準錯誤:通過該裝置報告執行出錯資訊
1.7 重定向與管道操作-2
■ 重定向操作
1.8 重定向與管道操作-3
■ 重定向操作
1.9 重定向與管道操作-4
■ 管道操作符號"|"
將左側的命令輸出結果,作為右側命令的處理物件
cmd | cmd2 [... | cmdn]
[root@localhost -]# grep "bash$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
teacher:x:500:500:BENET Linux Teacher:/home/teacher:/bin/bash
[root@localhost ] # grep “bash$” /etc/passwd | awk -F: ‘{print $1, $7}’
root /bin/bash
二、Shell指令碼變數
2.1 Shell變數的作用、型別
■ 變數的作用
用來存放系統和使用者需要使用的特定引數(值)
變數名:使用固定的名稱,由系統預設或使用者定義
變數值:能夠根據使用者設定、_系統環境的變化而變化
■ 變數的型別
自定義變數:由使用者自己定義、修改和使用
特殊變數:環境變數,只讀變數,位置變數,預定義變數
2.2 自定義變數-1
■ 定義一個新的變數
變數名以字母或下劃線開頭,區分大小寫,建議全大寫
■ 檢視變數的值
echo $變置名
[root@localhost ~]# Products Python
[root@ local host ~]# Version=2.7.13
[root@localhost ~]# echo $Product
Python
[root@ local host ~]# echo $Product $Version Python 2.7.13
2.3 自定義變數-2
■ 賦值時使用引號
雙引號:允許通過
符
號
引
用
其
他
變
量
值
單
引
號
:
禁
止
引
用
其
他
變
量
值
,
符號引用其他變數值 單引號:禁止引用其他變數值,
符號引用其他變量值單引號:禁止引用其他變量值,視為普通字元
反撇號:命令替換,提取命令執行後的輸出結果
■ 從鍵盤輸入內容為變數賦值
read [-p "提示資訊"]變數名
2.4 自定義變數-3
■ 設定變數的作用範圍
格式1: export變數名…
格式2: export變置名=變置值...
[root@localhost -]# echo "SProduct $Version’ Benet 6.0
[root@localhost ] # export Product Version
[root@localhost ~j# basK?
[root@localhost ~j# echo "SProduct $Version Benet 6.0
2.5 自定義變數-4
■ 整數變數的運算
expr 變數1 運算子 變數2 [運算子 變數3]...
■ 常用運算子
加法運算:+
減法運算:_
乘法運算:*
除法運算:/
求模(取餘)運算:%
2.6 特殊的Shell變數-1
■ 環境變數
由系統提前建立,用來設定使用者的工作環境
配置檔案:/etc/profile、 /.bash—profile
■ 常見的環境變數
PWD、 PATH
USER、SHELL、 HOME
[root@localhost ]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin:/root/bin
[root@localhost ]# PATH="$PATH:/root"
iroot@localhost j# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/^in:/usr/bin:/root/bin:/usr/local/mysql/bin:/root/bin:/root
2.7 特殊的Shell變數-2
■ 只讀變數
用於變數值不允許被修改的情況
[root@localhost -]# name=cloud
[root@localhost -]# readonly name //設定為只讀變數
[root@localhost ~j# echo $name
cloud
[root@localhost ] # name=yun
-bash: name: readonly variable //只讀變數不可以被重新賦值 [root@localhost~]#
[root@localhost -]# unset name //只讀變數不可以被刪除
-bash: unset: name: cannot unset: readonly variable
2.8 特殊的Shell變數-3
■ 位置變數
表示為$n,n為1-9之間的數字
[root@localhost ]# ./myprog.sh one two three four five
2.9 特殊的Shell變數-4
■ 預定義變數
$#:命令列中位置變數的個數
$*:所有位置變數的內容
$?:上一條命令執行後返回的狀態,當返回狀態值為o時 表示執行正常,非o值表示執行異常或出錯
$0:當前執行的程式/程式名
■ 預定義變數
[root@localhost -]# vim mybak.sh
#!/bin/bash
TARFILE=beifen-'date +%s'.tgz
tar zcf $TARFILE $* &> /dev/null
tcho "已執行$0指令碼, "
echo "共完成$#個物件的備份"
echo •具體內容包括:
[root@localhost -]# chmod +x mybak.sh
[root@localhost ]# ./mybak.sh /etc/passwd /etc/shadow 已執行./mybak.sh指令碼,
共完成2個物件的備份
具體包括:/etc/passwd /etc/shadow
相關文章
- 01 shell程式設計規範與變數程式設計變數
- Shell指令碼程式設計規範與變數(shell指令碼必須要知道的規矩!)指令碼程式設計變數
- Shell程式設計-shell變數1程式設計變數
- Shell程式設計-02-Shell變數程式設計變數
- shell程式設計–bash變數程式設計變數
- shell程式設計02——變數定義與使用程式設計變數
- Shell程式設計-04-Shell中變數數值計算程式設計變數
- Shell程式設計-shell變數2-位置變數和預定義變數程式設計變數
- shell程式設計–bash變數介紹程式設計變數
- 01 shell程式設計之變數定義程式設計變數
- shell指令碼之變數定義規範及使用指令碼變數
- Shell變數型別有哪些?linux運維shell程式設計變數型別Linux運維程式設計
- JS程式設計規範JS程式設計
- React程式設計規範React程式設計
- python程式設計規範Python程式設計
- 程式設計小記-程式設計規範程式設計
- Shell指令碼基本編輯規範及變數(詳細)指令碼變數
- shell程式設計學習筆記(二):Shell中變數的使用程式設計筆記變數
- Linux shell程式設計(一)shell指令碼中的變數詳解Linux程式設計指令碼變數
- shell指令碼程式設計學習筆記——變數指令碼程式設計筆記變數
- MySQL 設計與開發規範MySql
- 前端設計與編碼規範前端
- Go 語言程式設計規範Go程式設計
- python 程式設計規範有哪些?Python程式設計
- 程式設計命名規範(網文)程式設計
- Java併發程式設計---java規範與模式下的併發程式設計1.1Java程式設計模式
- Linux從入門到精通系列之SHELL程式設計變數與四則運算Linux程式設計變數
- Python程式設計規範+最佳實踐Python程式設計
- 上位機程式設計編碼規範程式設計
- 微信小程式元件設計規範微信小程式元件
- Shell語法規範
- shell程式設計(四)| grep正規表示式程式設計
- shell程式設計(四)| sed 正規表示式程式設計
- 05 shell程式設計之正規表示式程式設計
- MySQL資料庫規範 (設計規範+開發規範+操作規範)MySql資料庫
- 【shell程式設計】目錄檔案計數程式設計
- 名片設計規範
- 設計模式 基本規範與基本原則設計模式