CentOS之Shell文件編寫基礎


shell文件以.sh結尾,這是一種習慣而已。第一行以#! /bin/bash開頭;表示該文件使用的是bash語法;

如果不設置該行,你的shell腳本也可以執行,但是不符合規范。#表示注釋。

 

# vim first.sh

輸入以下內容

#! /bin/bash

date

echo "Hello world!"

退出文件編輯

# sh first.sh   執行腳本

# ./first.sh   提示權限不夠

# chmod +x first.sh

# ./first.sh   執行腳本

# sh -x first.sh  查看shell的執行過程,方便調試

date用法

date  +%Y:以四位數字格式打印年分

date +%y:二位數展示年分

date +%m :月份

date +%d:日期

date +%H:小時

date +%M:分鍾

date +%S:秒

date +%w:星期;0表示周日。

# date +"%Y-%m-%d %H:%M:%S"

# date -d "-1 day" +%d  一天前的日期

# date -d  "-1 hour" +%H  一個小時前

# date -d  "-1 min" +%M   一分鍾前

變量

  1)變量名=變量值

  2)腳本中的反引號(鍵盤左上角 波浪線鍵)是將字符串當成shell命令執行,返回命令的執行結果。

d=`date  +%H:%M:%S`   變量

echo "腳本開始時間 $d."

echo "現在休眠2秒"

sleep 2

d1=`date +%H:%M:%S`     變量

echo  "腳本結束:$d1."

數學運算

a=1

b=2

sum=$[$a+$b]

echo "$a+$b=$sum"

和用戶交互

read -p   "請輸入一個數字:" x

read -p  "請再次輸一個數字:" y

sum=$[$x+$y]

echo   "這個和是:$sum"

腳本預設變量

文件a.sh,內容如下

sum=$[$1+$2]

echo "sum=$sum"

執行腳本  sh a.sh   1 2

輸出結果 sum=3

$1和$2是shell腳本的預設變量。  $0表示腳本本身的名字。

邏輯語句

  if

    if   判斷語句;  then

       command

    fi

編寫腳本文件 a.sh

read -p "請輸入一個數字:" a

if((a<60)); then

  echo "$a 小於60"

fi

退出編輯

  if else

  if  判斷語句; then

    command

  else

    command

  fi

新建a.sh,內容如下

read -p "請輸入一個數字:" a

if((a<60)); then

  echo “小於60”

else

  echo "大於60"

fi

退出腳本編輯。

 else if

if 判斷語句;then

  command

elif 判斷語句;then

  command

else

  command

fi

新建sh文件a.sh,腳本如下

read -p "請輸入數字:" a

if((a<60));then

  echo "小於60";

elif ((a<120)) && ((a>=60)); then

  echo "小於120,但是大於60"

else

  echo "大於120"

fi

判斷大小除了使用(())形式外,還可以使用[ ];但是不能使用>,<,=了;

要使用-lt(小於),-gt(大於),-le(小於等於),-ge(大於等於),-eq(等於),-ne(不等於)。

# a=10; if [$a  -lt 5 ];then echo ok; fi

# a=10;if [$a  -gt 5];then echo ok; fi

# a=10; if [$a  -lt  1] || [$a  -gt  5];then echo ok;fi

文檔的判斷

格式:

if [-參數  filename];then

  command

fi

參數:

  -e:判斷文件或目錄是否存在

  -d:判斷是不是目錄以及是否存在。

  -f:判斷是不是普通文件以及是否存在

  -r:判斷是否有讀的權限

  -w:判斷是否有寫權限

  -x:判斷是否可執行

示例:

  if [ -d /home/];then echo ok;fi    判斷home是否是目錄以及是否存在。

case 邏輯判斷

case 變量 in

value1)

  command

  ;;

value2)

  command

  ;;

*)

  command

  ;;

esac

read -p "輸入一個數字:" n

a=$[$n%2]

case $a in

1)

  echo "奇數"

  ;;

2)

  echo "偶數"

  ;;

*)

  echo "不是一個數字"

  ;;

esac

 

for循環:seq 1 5表示從1 到5的序列。

示例1

for i in `seq 1 5`;do

  echo $i

done

示例2 :循環字符和數字的組合

for i in 1 2 3  a b;do echo $i;done

示例3:循環系統命令

for i in  `ls`;do echo $i;done

while 循環

while 條件;do

  command

done

示例1:

a=5

while [$a -ge 1];do

  echo $a

  a= $a-1

done

示例2:while死循環,用於監控

  while  :;do

    sleep 3

  done

 

函數

function sum()

{

  sum1=$[$1+$2+$3]

  echo $sum1

}

sum $1 $2 $3

運行腳本: sh a.sh 1 3 4    結果是8

break或continue(用法相似)

for i in `seq 1 5`

do

  echo $i

  if [$i==3]

  then

    break(或者 continue)

  fi

  echo $i

done

  echo aaa

exit退出整個shell腳本


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM