1. 程式人生 > >Shell腳本入門基礎

Shell腳本入門基礎

oss paragraph ont fig if語句 ret 1.5 ref cto

Shell腳本

DKing~共享

1.1 腳本概念

將多個命令先放入到一個文件中,方便一次性執行的一個程序文件

統一腳本存放目錄:/server/scripts

推薦使用vim編輯腳本

查看腳本執行過程 sh -x 腳本

1.2 腳本編輯格式

#!/bin/bash

#authordqf

#date2018/1/11

#ver1.0

#descbackup /etc to /backup

腳本編輯示例:

#!/bin/bash

#author:dqf

#date:2018/1/11

#ver:1.0

#desc:backup /etc to /backup

cd /

tar zchf /backup/etc-`date +%F-%a-%T`.tar.gz etc/

find /backup/ -type f -mtime +7 ! -name "etc-*-Mon.tar.gz" | xargs mv -t

/tmp

1.3 變量概念

系統中存在的可以隨時變化對操作環境有影響的變化的文件

1. 變量分類:

全局變量,又稱環境變量,全局都可使用

局部變量,又稱普通變量,當前環境使用

2. 賦予變量:

DQF=123(普通變量)

export DQF=123(環境變量)

永久生效放入/etc/profile

source dqf.sh 執行腳本也可以生效

3. 顯示變量:

# echo $DQF

123

# echo ${DQF}

123

$DQF==${DQF}

4. 與變量有關的文件

~/.bash_profile ~/.bashrc /etc/profile /etc/bashrc

5. 與變量有關的目錄:/etc/profile.d/

實例1-1 cowsay.sh放入到/profile.d/目錄下

# /usr/bin/cowsay Hello,World! 寫入腳本放入/etc/profile.d/目錄

______________

< Hello,World! >

--------------

\ ^__^

\ (oo)\_______

(__)\ )\/\

||----w |

|| ||

# chmod +x /etc/profile.d/cowsay.sh 賦予執行權限後,開機才能自運行

1.4 $的作用

$ 0 表示腳本的名字

$ 1 表示第一個參數

$ 2 表示第二個參數

$ n 表示第n個參數

$ # 表示腳本的個數

$ ? 表示上一個命令的返回值,判斷上一個命令是否執行正確

1.5 [ ]的作用(條件表達式)

[ -d /root ]用於判斷根下是否存在目錄/root d表示directory

[ -f /root/oldboy.txt ]用於判斷/root下是否存在oldboy.txt文件 f表示file

$ ? 表示上一個命令的返回值,判斷上一個命令是否執行正確

0 表示正確 0表示不正確,命令執行有問題

實例1-2 判斷系統中 是否存在 /oldboy/oldboydir目錄 如果存在提示 dir exist

# [ -d /data ]

# echo $?

0

# [ -d /oldboy/oldboydir ] && echo "dir exist"

dir exist

# [ -f /tmp/ufo.txt ] || touch /tmp/ufo.txt

1.6 比較大小

[ a -eq b ] equal == 表示a=b

[ a -ne b ] not equal != 表示ab

[ a -gt b ] great than > 表示a>b

[ a -ge b ] great equal >= 表示ab

[ a -lt b ] less than < 表示a<b

[ a -le b ] less equal <= 表示ab

1.7 if語句

if語句格式-1

if [ 設定條件 ]then

執行命令

fi(結束標誌)

if語句格式-2

if [ 設定條件 ]then

執行命令

else

執行其他

fi(結束標誌)

1.8 for循環

for循環格式:

for name in 條件命令

do

執行命令

done

1.9 腳本案例演示

1.9.1 利用awk制作簡單運算器

利用read/awk/if語句編劇腳本

vim /server/scripts/bc.sh

read -t5 -p "input a b:" a b

if [ $b -eq 0 ];then

echo "b is not allow 0"

exit

fi

awk -va=$a -vb=$b 'BEGIN{print a+b,a-b,a*b,a/b}'

利用$n/awk/if語句編輯腳本

vim /server/scripts/bc.sh

if [ $# -ne 2 ];then

echo "Usages:you can only write two words"

exit

fi

awk -va=$1 -vb=$2 'BEGIN{print a+b"\n"a-b"\n"a*b"\n"a/b}'

1.9.2 利用for語句關閉無用服務

vim /server/scripts/chk.sh

off=`chkconfig |awk '!/crond|network|sshd|rsyslog|sysstat/{print $1}'`

for dqf in $off

do

chkconfig $dqf off

done

1.9.3 變量賦值方法

方法1-賦值普通變量——重啟失效 普通變量不能在腳本中運行

# a=x

# echo $a env 查看系統變量

x

方法2-export賦值環境變量——重啟失效 環境變量可以在腳本中運行

# export a=x

# echo $a

x

方法3-read 交互式賦值變量——重啟失效

# read -t5 -p "input a b:" a b -t5 表示5秒後自動退出

input a b:2 3 -p 表示在屏幕上打印問答內容

# echo $a $b -s 表示隱藏輸入過程

2 3 寫入/etc/profile中才能配置永久變量

技術分享圖片

Shell腳本入門基礎