12月27日任務shell
20.1 shell腳本介紹編程
20.2 shell腳本結構和執行vim
20.3 date命令用法bash
20.4 shell腳本中的變量運維
shell是一種腳本語言,是一名運維工程師所必需掌握的最基本的能力。經過使用shell能夠實現簡單的自動化運維,從而減輕咱們的工做壓力,增長實際的工做效率。函數
shell腳本是系統命令的集合,經過使用shell的邏輯判斷、循環語法、自定義的函數,能夠實現更復雜功能腳本的編寫。配合Linux的crond服務,可以實現週期性操做的自動化運行,從而大大減小運維工做量。學習
shell腳本的學習須要作到多學多練,熟能生巧。另外Linux基礎知識也不容忽視,它是編寫一個shell腳本的基礎。只有勤學、多練,多思考,這樣才能儘快、更好的學好shell編程。spa
一個shell腳本是以.sh
結尾的文件,文件開頭#!/bin/bash
。 對於本機而言#!/bin/bash
並非必須的,可是對於其餘機器上,不加開頭就不必定能夠執行,它的意思即其後的代碼是由/bin/bash
命令進行解析的。因此編寫shell時最好都寫上。code
範例:example1.sh字符串
vim example1.sh #!/bin/bash # by test echo "hello world"
由#開頭的行在shell中爲註釋行(#!除外),此外有些特殊的腳本中#開始的行並必定是註釋,例如chkconfig腳本。
# 這裏腳本在當前工做目錄中,執行其餘路徑下的腳本須要使用絕對路徑 chmod +x example1.sh ./example
bash example1.sh
sh -x example1.sh
# 沒信息代表沒有語法錯誤 sh -n example1.sh
date命令在shell腳本內十分有用,它能夠生成想要的時間格式。
默認date命令顯示
[root@localhost shell]# date
經常使用的幾種時間格式表示
# 日期 YYYY-MM-DD 格式 date +%F == date +%Y-%m-%d # 時間 HH:MM:SS 格式 date +%T == date +%H:%M:%S # 幾天前、後... date -d "+1 day" // 一天後(明天的日期) date -d "-1 day" // 一天前(昨天的日期) date -d "-1 month" // 一月前(上個月的今日) date -d "-1 min" // 一分鐘前 # 自1970-01-01後的秒數 date +%s # 將+%s的秒數換爲具體時間 date -d @1504697280 # 將具體時間描述換算爲秒數 date +%s -d "2018-02-05 19:30:00" #星期幾即本年的第幾周 date +%w --> 1 //星期一 date +%W --> 06 //18年的第6周 date +%a --> Mon //週一 date +%A --> Monday //週一全稱 # 月份 date +%b --> Feb date +%B --> February
shell變量的使用場景
shell的編寫過程當中,若是某些字符串屢次使用而且字符串的長度較長時可使用shell變量進行代替,在使用時使用$變量
進行操做,減小重複勞動。例如某些命令的絕對路徑表示。
此外在shell條件判斷語句時,也經常使用變量,例如:
if[ $a -gt 1 ] then ... fi
引用某個命令的結果時,將命令的結果賦予某個變量,在後續便於進行判斷等條件處理。例如 n=wc -l 1.txt
寫於用戶交互的腳本時,變量也是必不可少的。例如:
read -p "Input a number: " n echo $n
shell內有一些內置變量,其使用場景仍是比較普遍的。
$0 --> 腳本自己 $1 --> 腳本後接的第一個參數 $2 --> 腳本後接的第二個參數 $# --> 參數的個數 $@ -->
shell內能夠進行簡單的數學運算:
a=1 b=2 c=$(($a+$b)) //或c=$[$a+$b]