溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

shell腳本介紹

發布時間:2020-07-31 02:30:29 來源:網絡 閱讀:530 作者:studywinwin 欄目:開發技術

shell腳本介紹

shell是什么

  • shell是一種腳本語言
  • 可以使用邏輯判斷、循環等語法
  • 可以自定義函數
  • shell是系統命令的集合
  • shell腳本可以實現自動化運維,能大大增加我們的運維效率

shell腳本結構和執行方法

  • 開頭需要加#!/bin/bash
  • 以#開頭的行作為解釋說明
  • 腳本的名字以.sh結尾,用于區分這是一個shell腳本
  • 執行方法有兩種
  • chmod +x 1.sh;./1.sh
  • bash 1.sh
  • 查看腳本執行過程 bash -x 1.sh
  • 查看腳本是否語法錯誤 bash -n 1.sh

加入到chkconfig --list列表,必須有chkconfig,description這兩項

shell腳本介紹

date命令的用法

date +"%Y-%m-%d %H:%M:%S"  //年月日時分秒
date +"%F %T"  //同上
date +"%s"        //時間戳
date -d @1521172172  //時間戳轉化為年月日星期時分秒
date +%s -d '2016-9-10 06:10:30'   //將某個日期轉化為時間戳
date -d "+1 day"   //一天后的日期
date -d "-1 day"   //一天前的日期
date -d "-1 month" //一月前的日期
date -d "-1 min"    //一分鐘前的日期
date +%w     //星期
date +%W    //一年中的第幾周

cal命令的用法

cal -h  //查看日歷的幫助信息

shell腳本中的變量

  • 當腳本中使用某個字符串較頻繁并且字符串長度很長時就應該使用變量代替
  • 使用條件語句時,常使用變量 if [ $a -gt 1 ]; then ...; fi
  • 引用某個命令的結果時,用變量替代 n=wc -l 1.txt
  • 寫和用戶交互的腳本時,變量也是必不可少的 read -p 'input a number:' n; echo $n 如果沒寫這個n,可以直接使用$REPLY
  • 內置變量$0,$1,$2... $0表示腳本本身,$1第一個參數,$2第二個參數... $#表示參數個數
  • 數學運算a=1;b=2; c=$(($a+$b))或者$[$a+$b]

shell中的邏輯判斷

格式1:if 條件 ; then 語句; fi
格式2:if 條件; then 語句; else 語句; fi
格式3: if 條件; then 語句; elif 條件; then 語句; else 語句; fi
邏輯判斷表達式:if [ $a -gt $b ]; if [ $a -lt 10 ]; if [ $b -eq 20 ]等
-gt (>); -lt ()<; -ge(>=); -le(<=); -eq(==); -ne(!=)
可以使用&& ||結合多個條件
if [ $a -gt 5 ] && [ $a -lt 10 ]; then ...; fi
if [ $b -gt 5 ] || [ $b -lt 3 ]; then...; fi

if判斷文件、目錄屬性
[ -f file ]判斷是否是普通文件,且存在
[ -d file ]判斷是否是目錄,且存在
[ -e file ]判斷文件或目錄是否存在
[ -r file ]判斷文件是否可讀
[ -w file ]判斷文件是否可寫
[ -x file ]判斷文件是否可執行

if判斷的一些特殊用法

if [ -z "$a" ]這個表示當變量a的值為空時
if [ -n "$a" ]表示當變量a的值不為空
if grep -q '123' 1.txt; then ...; fi //表示1.txt中含有‘123’的行時會怎么樣
if [ ! -e file ] //表示文件不存在時
if((a<1)) //等于于if [ $a -lt 1 ]
[]中不能使用<,>,==,!=,>=,<=這樣的符號

shell中的case判斷

格式 case 變量名 in
            value1)
                        command
                        ;;
            value2)
                        command
                        ;;
            *)
                        command
                        ;;
            esac

在case程序中,可以在條件中使用 |,表示或的意思。如 2|3)

for循環

for 變量名 in 條件; do ...; done   //注意:for是以空格作為分隔符的

while循環

while 條件; do ...; done

continue、break、exit

continue  //用在循環中時,結束本次循環,進行下一次循環
break   //有在循環中時,跳出循環
exit   //退出整個腳本

shell腳本中的函數

函數就是把一段代碼整理到一個單元中,并給這個小單元起一個名字,當用到這段代碼時直接調用這個單元的名字即可

function 函數名 {   //函數必須放在最前面
    command
}

shell中的數組

a=(1 2 3 4 5)  //定義數組a
echo ${a[*]} 或 echo ${a[@]} //輸出數組a的每個元素
echo ${a[0]} //輸出數據a中的第一個元素
a[1]=100  //給數組a中的第二個元素賦值
a[5]=500  //給數組增加一個元素并賦值
unset a[5] //元素的刪除
unset a  //數組的刪除
echo ${#a[*]} 或 echo ${#a[@]}  //打印數組的個數
a=(`seq 1 10`)
echo ${a[*]:3:4} //下標為3開始截取,截取4個元素 [4,5,6,7]
echo ${a[*]:0-3:2}  //倒數第三個元素開始截取,截取2個 [8,9]
a=(${a[*]/10/20})  //將數組中的10的值改為20
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女