Shell編程基礎 shell的結構、執行及變量

12月27日任務shell

20.1 shell腳本介紹編程

20.2 shell腳本結構和執行vim

20.3 date命令用法bash

20.4 shell腳本中的變量運維

 

shell腳本介紹

shell是一種腳本語言,是一名運維工程師所必需掌握的最基本的能力。經過使用shell能夠實現簡單的自動化運維,從而減輕咱們的工做壓力,增長實際的工做效率。函數

shell腳本是系統命令的集合,經過使用shell的邏輯判斷、循環語法、自定義的函數,能夠實現更復雜功能腳本的編寫。配合Linux的crond服務,可以實現週期性操做的自動化運行,從而大大減小運維工做量。學習

shell腳本的學習須要作到多學多練,熟能生巧。另外Linux基礎知識也不容忽視,它是編寫一個shell腳本的基礎。只有勤學、多練,多思考,這樣才能儘快、更好的學好shell編程。spa


Shell腳本結構和執行方法

一個shell腳本是以.sh結尾的文件,文件開頭#!/bin/bash。 對於本機而言#!/bin/bash並非必須的,可是對於其餘機器上,不加開頭就不必定能夠執行,它的意思即其後的代碼是由/bin/bash命令進行解析的。因此編寫shell時最好都寫上。code

範例:example1.sh字符串

vim example1.sh
#!/bin/bash
# by test

echo "hello world"

由#開頭的行在shell中爲註釋行(#!除外),此外有些特殊的腳本中#開始的行並必定是註釋,例如chkconfig腳本。

執行腳本的方法

  1. 先賦予執行權限,再./執行
# 這裏腳本在當前工做目錄中,執行其餘路徑下的腳本須要使用絕對路徑
chmod +x example1.sh
./example
  1. 使用bash命令
bash example1.sh

查看腳本執行過程

sh -x example1.sh

檢測腳本語法

# 沒信息代表沒有語法錯誤
sh -n example1.sh

date命令用法

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變量進行代替,在使用時使用$變量進行操做,減小重複勞動。例如某些命令的絕對路徑表示。

條件判斷

此外在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]
相關文章
相關標籤/搜索