天天看點

linux學習之shell腳本初級

一、 簡單介紹

shell指的就是人機互動平台。常見的有IBM的ksh,HP的csh,windows的powershell以及linux的bash shell。

首先養成良好的習慣,通過#echo $SHELL指令可以查到預設shell。在腳本的開頭加上聲明。

如圖,查詢出的預設shell為/bin/bash,是以一般在腳本開頭加上一行如下聲明

#!/bin/bash
####其中,#!代表聲明,如果隻有#,則代表注釋
           

單引号:遇到任何特殊字元都是原樣輸出

雙引号:遇到特殊字元會轉義後輸出

二、 常見功能

  1. 定義變量
DIR=/backup/
DIR=”/backup/”
A=100
a=100
B=200
C=A+B
           

定義完之後使用echo $C指令可以檢視具體變量的值。

$(command),可以引用指令執行的結果

例如:

CPU=$(df -h|grep -w / |awk ‘{print $5}’ |sed ‘s/%//’)
if [ “$CPU” -ge 80 ]; then
	echo “warning,CPU is full”
else
	echo “cpu is safe”
fi

           

******注意:if後面一定要加空格,不然會出現文法錯誤。

  1. 判斷指令執行的結果
command1 && command2
##如果指令1執行成功了則執行指令2,反之則不執行指令2 
command1 || command2
##如果指令1執行失敗則執行指令2,反之則不執行指令2
           

或者用 echo $?來查詢指令是否執行成功,如果傳回值是0代表成功,1-255代表失敗。

例如:

for num in $(seq 1 10)
do
hosts=192.168.6.$num
ping -c2 $hosts &> /dev/null
if [ “$?” = 0 ];then
echo “$hosts is up”
else
echo “$hosts is down”
fi
done
           
  1. test表達式判斷

    可以用main test去檢視test的所有用法,這裡舉兩個典型例子。

test -f passwd.1
##判斷普通檔案passwd.1是否存在
           

在腳本中可以簡寫成[ -f passwd.1],或者用[! -f passwd.1]表示反向判斷。

  1. if判斷
  2. for循環

    例子:

for num in $(seq in 1 10)
do touch /tmp/file.$num && echo “/tmp/file.$num create successful!”
done
           
  1. 位置化參數

    $1:取第一個參數

    $2:取第二個參數

    $*:取所有參數

    $0:取腳本檔案名

echo firstname:$1
echo lastname:$2
echo fullname:$*

:wq!

#./test.sh wu yequan
firstname:wu
lastname:yequan
fullname:wu yequan
           
linux學習之shell腳本初級
if [ “$1” = redhat ];then
echo “fedora”
elif [ “$1” = redhat ]; then
echo “redhat”
else
 echo “ERROR,Please reinput”
fi
           

繼續閱讀