手機版
你好,游客 登錄 注冊
背景:
閱讀新聞

Shell編程規范與變量

[日期:2019-10-10] 來源:Linux社區  作者:SiceLc [字體: ]

Shell腳本的概念

  • 將要執行的命令按順序保存到一個文本文件
  • 給該文件可執行權限,便可運行
  • 可結合各種Shell控制語句以完成更復雜的操作

Shell腳本應用場景

  • 重復性操作
  • 批量事務處理
  • 自動化運維
  • 服務運行狀態監控
  • 定時任務執行
  • .......

Shell的作用——命令解釋器,“翻譯官”

  • 介于系統內核與用戶之間,負責解釋命令行

用戶的登錄Shell

  • 登錄后默認使用的Shell程序,一般為/bin/bash
  • 不同Shell的內部指令、運行環境等會有所區別

    [[email protected] ~]# cat /etc/shells
    /bin/sh
    /bin/bash
    /sbin/nologin
    ......

    編寫腳本代碼

  • 使用vi文本編輯器
  • 每行一條Linux命令,按執行順序依次編寫
[[email protected] ~]# vim first.sh
cd /boot/
pwd
ls -lh vml*

賦予可執行權限

  • 使腳本具有可執行屬性
[[email protected] ~]# chmod +x first.sh        

執行腳本文件

  • 方法一:腳本文件路徑(絕對路徑與相對路徑)

    [[email protected] ~]# ./first.sh          //必須擁有x(執行)權限,執行文件,但不會改變所在路徑
  • 方法二:sh腳本文件路徑

    [[email protected] ~]# sh /first.sh      //執行文件,但不會改變所在路徑
  • 方法三:source腳本文件路徑

    [[email protected] ~]# source /first.sh
  • 方法四:. 腳本文件路徑

    [[email protected] ~]# . /first.sh

更完善的腳本構成

  • 腳本聲明
  • 注釋信息
  • 可執行語句
    [[email protected] ~]# vim /first.sh
    #!/bin/bash
    # This is my first Shell-Script.
    cd /boot
    echo "當前的目錄位于:”                 //輸出友好提示信息
    pwd
    echo "其中以vmI開頭的文件包括:"
    Is -Ih vml*

    重定向與管道操作

交互式硬件設備

  • 標準輸入:從該設備接收用戶輸入的數據
  • 標準輸出:通過該設備向用戶輸出數據
  • 標準錯誤:通過該設備報告執行出錯信息
類型設備文件文件描述編號默認設備
標準輸入 /dev/stdin 0 鍵盤
標準輸出 /dev/stdout 1 顯示器
標準錯誤 /dev/stderr 2 顯示器

重定向操作

類型操作符用途
重定向輸入 < 從指定的文件讀取數據,而不是從鍵盤輸入
重定向輸出 > 將輸出結果保存到指定的文件(覆蓋原有內容)
  >> 將輸出結果追加到指定的文件
標準錯誤輸出 2> 將錯誤信息保存到指定的文件(覆蓋原有內容)
  2>> 將錯誤信息追加到指定的文件中
混合輸出 &> 將標準輸出、標準錯誤的內容保存到同一個文件中

管道操作符號“|”

  • 將左側的命令輸出結果,作為右側命令的處理對象

    cmd1 | cmd2 [...| camdn]
    [[email protected] ~]# grep "bash$" /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    Teacher:/home/teacher:/bin/bash
    [[email protected] ~]# grep“bash$”letc/passwd I awk -F: '{print $1,$7}'
    root /bin/bash
    teacher /bin/bash

Shell變量的作用、類型

變量的作用

  • 為靈活管理Linux系統提供特定參數,有兩層意思

    • 變量名:使用固定的名稱,由系統預設或用戶定義

    • 變量值:能夠根據用戶設置、系統環境的變化而變化

      變量的類型

  • 自定義變量:由用戶自己定義、修改和使用
  • 環境變量:由系統維護,用于設置工作環境
  • 位置變量:通過命令行給腳本程序傳遞參數
  • 預定義變量:Bash中內置的一類變量,不能直接修改

    自定義變量

  • 變量名以字母或下劃線開頭,區分大小寫,建議全大寫
    變量名=變量值

    查看變量的值

    echo $變量名
    [[email protected] ~]# Product=Python
    [[email protected] ~]# Version=2.7.13
    [[email protected] ~]# ehco $Product
    Python
    [[email protected] ~]# ehco $Product $Version
    Python 2.7.13

    賦值時使用引號

  • 雙引號:允許通過$符號引用其他變量值
  • 單引號:禁止引用其他變量值,$視為普通字符
  • 反撇號:命令替換,提取命令執行后的輸出結果

    從鍵盤輸入內容為變量賦值

    read [-p "提示信息"] 變量名

設置變量的作用范圍

格式1:export 變量名 ...
格式2:export 變量名=變量值 ...
  • 兩種格式可以混合使用
    [[email protected] ~]# echo "$Producvt $Version"
    Python 2.7.13
    [[email protected] ~]# export Product Version
    [[email protected] ~]# bash
    [[email protected] ~]# echo "$Product $Version"
    Python 2.7.13

    整數變量的運算

    expr 變量1 運算符 變量2  [運算符 變量3]...

    常用運算符

  • 加法運算:+
  • 減法運算:-
  • 乘法運算:\*
  • 除法運算:/
  • 求模(取余)運算:%
    [[email protected] ~]# vim demo02.sh
    #!/bin/bash
    read -p "請輸入一個整數:" a
    read -p "請輸入另一個整數:" b
    c=`expr $a + $b`
    echo "兩個整數之和為:$c"
    [[email protected] ~]# chmod +x demo02.sh 
    [[email protected] ~]# ./demo02.sh 
    請輸入一個整數:12
    請輸入另一個整數:13
    兩個整數之和為:25

特殊的Shell變量

環境變量

  • 由系統提前創建,用來設置用戶的工作環境
  • 配置文件: /etc/profile、 ~/.bash_ profile

常見的環境變量

  • PWD、PATH
  • USER、SHELL、 HOME
[[email protected] ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin:/root/bin
[[email protected] ~]# PATH="$PATH:/root"
[[email protected] ~]# echo $PATH
 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin:/root/bin:/root

位置變量

  • 表示為$n, n為1~9之間的數字
[[email protected] ~]# ./myprog.sh one two three four five six //$1,第1個位置參數為one,$2,第2個位置參數為two

預定義變量

  • $#;命令行中位置變量的個數
  • $*:所有位置變量的內容
  • $?:. 上一條命令執行后返回的狀態,當返回狀態值為0時表示執行正常,非0值表示執行異常或出錯
  • $0:當前執行的進程/程序名
[[email protected] ~]# vim mybak.sh
#!/bin/bash
TARFILE=beifen-'date +%s .tgz
tar zcf $TARFILE $* &> /dev/null
echo "已執行$0腳本,“
echo“共完成$#個對象的備份”
echo”具體內容包括: $*”
[[email protected] ~]# chmod +x mybak.sh
[[email protected] ~]# ./mybak.sh /etc/passwd /etc/shadow
已執行./mybak.sh腳本,
共完成2個對象的備份
具體包括:/etc/passwd /etc/shadow

Linux公社的RSS地址http://www.vnrggh.live/rssFeed.aspx

本文永久更新鏈接地址http://www.vnrggh.live/Linux/2019-10/160962.htm

linux
相關資訊       shell編程 
本文評論   查看全部評論 (0)
表情: 表情 姓名: 字數

       

評論聲明
  • 尊重網上道德,遵守中華人民共和國的各項有關法律法規
  • 承擔一切因您的行為而直接或間接導致的民事或刑事法律責任
  • 本站管理人員有權保留或刪除其管轄留言中的任意內容
  • 本站有權在網站內轉載或引用您的評論
  • 參與本評論即表明您已經閱讀并接受上述條款
彩票平台