Linux學習(三)- shell腳本編程基礎

前言:接着Linux學習(二)vim文本編輯器說

vim 文本編輯器

         u     撤銷最近的更改
         /*     撤銷之前多次更改
         U     撤消光標落在這行後所有此行的更改
         按ctrl + r    重做最後的“撤消”更改
         .      重複前一個操作
         n.    重複前一個操作n次
         退出模式下
                 e!   直接還原到文件最初打開狀態

         v    面向字符選中
         V    面向行選中
         ctrl + v     面向塊選中

        配置文件:永久有效
        全局: /etc/vimrc
        個人: ~/.vimrc

        擴展模式:當前vim進程有效
                    set nu   顯示行號
                    set ic    忽略大小寫

四,shell腳本編程基礎

1.shell腳本基礎

         格式要求:首行shabang機制
                     "#!/bin/bash"
                     "#!/usr/bin/python"
                     "#!/usr/bin/perl"

2.創建shell腳本

使用文本編輯器(例如vim)創建文本文件
          第一行必須包括shell聲明序列: "#!"
                        例如:"#!/bin/bash"
          添加註釋
                         註釋以 "#" 開頭

 shell腳本示例

Linux學習(三)- shell腳本編程基礎


 腳本調試
           檢測腳本中的語法錯誤       
                     bash -n
           調試執行
                   bash -x

3.本地變量

變量賦值: name=‘value’
    可以使用引用value:
            (1) 可以是直接字串:name= "root"
            (2) 變量引用: name="$USER"
            (3) 命令引用: name=`COMMAND`  name=$(COMMAND)

 變量引用: ${name} $name
      "":弱引用,其中的變量引用會被替換爲變量值
    '':強引用,其中的變量引用不會被替換爲變量值,而保持原字符串

4.退出狀態

進程使用退出狀態來報告成功或失敗
     0 代表成功, 1-255代表失敗
     $? 變量保存最近的命令退出狀態  (echo執行)

5.算數運算

實現算數運算
        var=$[ 算術表達式 ]
        var=$(( 算術表達式 ))
        echo ‘算術表達式’ | bc

寫腳本時的實用快捷鍵
   ctrl + z 寫腳本時可以保存到後臺
   fg 回到後臺腳本
   bg 查看有多少後臺
   shift +^ 跳到行首
   shift +$ 跳到行尾
   :e! 直接恢復到文件最初的狀態


6.邏輯運算

!  非,取反向結果( ! 加到前面,後面要有空格)

7.條件測試

 test 
 [ ]            
 [[ ]]

中括號裏面前後必須有空白字符

 /usr/bin/[    相當於test
 man test  整理命令選項(解釋很詳盡,隨時用隨時查)

執行操作符
       &&    並且,同時爲真爲真     相當於' -a'
         ||       或者,有一個假爲假     相當於'-o'

     用於 [[ ]] 中


數值測試
       -gt     是否大於
       -ge    是否大於等於
       -eq    是否等於
       -ne    是否不等於
        -lt     是否小於        
        -le    是否小於等於

     前有空格後有空格


字符串測試
         ==     是否等於
        !=    是否不等於
         =~     左側的字符串能否匹配右面的模式
         -z      字符串是否爲空
         -n      字符串是否爲不空

      字符串一般都需要用" " 引起來


文件測試
      文件存在性及類別測試
             -e FILE: 文件存在性測試,存在爲真,否則爲假
             -f FILE:是否存在且爲普通文件
      文件權限測試:
             -r FILE:是否存在且可讀
             -w FILE: 是否存在且可寫
             -x FILE: 是否存在且可執行
       文件特殊權限測試:
             -u FILE:是否存在且擁有suid權限
             -g FILE:是否存在且擁有sgid權限
             -k FILE:是否存在且擁有sticky權限
       文件大小測試
             -s FILE: 是否存在且非空

8.read命令

read   接受輸入
      -p       顯示輸入的內容
      -s       靜默,不顯示輸入的內容
      -t N     控制輸入時間
      -n N    控制輸入字符的最大長度
      -d 字符     結束符

通常 -p 放最後


9.bash配置文件

全局配置
      /etc/profile
      /etc/profile.d/*.sh
      /etc/bashrc
個人配置
      ~/.bashrc
      ~/.bashrc_profile
profile 類 
        /etc/profile
        /etc/profile.d/*.sh
        ~/.bashrc_profile
    控制 :    環境變量  ; 運行命令或腳本
bashrc  類
        /etc/bashrc
        ~/.bashrc
     控制 :   命令別名和函數  ;  本地變量
修改配置文件生效方法
         重啓shell進程
          . 或 source(後面接文件路徑命,中間有空格)

10.倆種登錄方式

交互式登錄
          直接通過終端輸入賬號密碼登錄
          使用“su - UserName” 切換的用戶
   執行順序: /etc/profile  -->  /etc/profile.d/*.sh  --> ~/.bash_profile  -->  ~/.bashrc  -->  /etc/bashrc
 非交互式登錄   可以繼承
           su UserName
           圖形界面下打開的終端
           執行腳本
           任何其它的bash實例
   執行順序: ~/.bashrc  -->  /etc/bashrc  -->  /etc/profile.d/*.sh

額外可以瞭解可能會用到的
     -:普通文件
    d: 目錄文件
     b: 塊設備
     c: 字符設備
     l: 符號鏈接文件
     p: 管道文件pipe
     s: 套接字文件socket
     wall 發廣播
     ping -W1 -c1 只執行一次,並且等待一秒
     stty -echo 敲命令不顯示 不換行
     stty echo 解除

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