Linux shell

shell的運行過程

1.腳本運行環境

  • 登錄後默認使用的Shell程序,一般爲/bin/bash不同Shell的內部指令、運行環境等會有所區別
  • 查看shell cat letc/shells
    1. /bin/sh
    2. /binvbash
    3. /sbin/nologin
    4. /bintcsh
    5. /bin/csh
    6. /binksh

awk ‘(print $1)’:取某一列 awk -F: ‘(print $1,$2)’ wc -l統計行數

2.shell的編寫與執行

  • 第一行:聲明使用的bash:#!/bin/bash
  • 第二行:註釋
  • 執行shell腳本的方式
    1. ./腳本,必須要有x權限
    2. sh 腳本 不一定需要x的權限
    3. source 腳本
  • 重定向與管道操作
    • 交互式硬件設備:
      1. 標準輸入:/dev/stdin 0
      2. 標準輸出:/dev/stdout 1
      3. 標準輸出錯誤:/dev/stderr 2
重定向輸入>將輸出重定向到文件
重定向輸出<將輸入重定向文件
追加>>將文件以追加的方式重定向到文件
輸出合併>&將輸出文件合併
輸入合併<&將輸入文件合併
<<tag將開始標記tag和結束標記tag之間的內容作爲輸入
  • /dev/null :如果希望執行某個命令但是有不希望屏幕上顯示輸出結果,可以將輸出重定向到/dev/null文件中。此文件是一個特殊的文件,寫入的文件都會被丟棄,從此讀取文件內容啥也讀取不到,但是他會起到禁止輸出的效果

2.變量

  • Shell變量的作用
    • 變量的作用
      1. 爲靈活管理 Linux系統提供特定參數,有兩層意思
      2. 變量名:使用固定的名稱,由系統預設或用戶定義
      3. 變量值: 據用戶設置、系統環境的變化而變化
    • 變量的類型
      1. 自定義變量:由用戶自己定義、修改和使用
      2. 環境變量:由系統維護,用於設置工作環境
      3. 位置變量:通過命令行給腳本程序傳遞參數
      4. 預定義變量:Bash中內置的一類變量,不能直接修改
  • 自定義變量
    1. 賦值時使用引號
    2. 雙引號:允許通過$符號引用其他變量值
    3. 單引號:禁止引用其他變量值,$視爲普通字符
    4. 反撇號:命令替換,提取命令執行後的輸出結果
    5. read -p [” “] var 鍵盤輸入內容爲變量賦值
  • 設置變量的作用範圍
    • export :全局變量

整數變量的運算

  • 格式: expr 變量1 運算符 變量2 運算符 變量3…
    1. 常用運算符
    2. 加法運算: +
    3. 減法運算:-
    4. 乘法運算:\ *
    5. 除法運算: /
    6. 求模(取餘)運算: %
  • 環境變量:
    1. 配置文件:/etc/profile,~/bash_profile
  • 位置變量:$n,n爲1-9之間的數字
  • 默認參數位置:
    1. $#:傳遞參數腳本的參數的個數
    2. $*:所有位置參數的內容
    3. $?:命令中執行後返回的狀態
    4. $$:當前進程的進程號
    5. $!:後臺運行的最後一個進程號
    6. $-:顯示shell使用的當前選線
    7. $0:當前執行的進程名

CRONTAB

  • 計劃任務(編寫腳本時注意添加命令的腳本,先export 腳本變量)
    1. crontab -e:修改crontab文件
    2. crontab -l:顯示crontab文件
    3. crontab -r:刪除crontab文件
    4. crontab -ir:刪除crontab文件前確認
  • 編寫語法(某一列’*’表示全部範圍有效):
    1. 第一列:分鐘00-59
    2. 第二列:小時00-23
    3. 第三列:日1-31
    4. 第四列:月1-12
    5. 第五列:星期:0-6
    6. 第六列:運行的命令(要寫完全路徑)

3.條件測試

  • 條件測試:文件測試,整數值比較,字符型比較
    • if語句
      • test命令:測試指定表達式是否成立
        1. 格式:①test 條件表達式 ; ② test [ 條件表達式 ](中括號中間的表示與中括號兩端都要有空格)
        2. 文件測試: 格式:【操作符 文件或目錄】
          • -d 測試時候是目錄
          • -f 測試是否是文件
          • -e 測試目錄或者文件是否存在
          • -r,w,x:測試目標是否有相應的權限
        3. 數值比較 : [整數1 操作符 整數2]
          • -eq :等於
          • -ne: 不等於
          • -gt:大於
          • -lt:小於
          • -le:小於等於
        4. 字符串比較
          • 格式:[ 字符串1 = 字符串2 ]()等號的左右要有空格,【】與字符串之間也要有空格,而賦值語句則等號左右沒有空格
          • 【 -z 字符串】判斷是否是空白字符串
        5. 邏輯測試
          • 格式:【表達式1】操作符 【表達式2】
          • 格式2: 命令1 操作符 命令2
            • -a或者&&:邏輯與,而且的意思
            • -o或者||:邏輯或,或者的意思
            • !:邏輯否
      • if結構
          • 單分支結構:if then fi
          • 雙分支結構: if then else fi
          • 多分枝結構:if then elif then else fi

3.循環

  • for循環
批量添加用戶,並設置用戶名
  • for循環寫法
    1. for((i=1;i<=10;i++))
    2. for i in `seq 10`
    3. for i in {1…10}
  • 表達式的表達方法
    1. let var=a * j
    2. ((var=i*j))
    3. var=$i*$j
    4. var=$[i*j]
    5. var=`expr $i \* $j `
    6. var=`echo $i*$j |bc`
  • while循環
  • case
每一分支下使用“;;”結束,*)表示其他情況

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