Shell脚本入门基础
Shell腳本
DKing~共享
1.1?腳本概念
將多個命令先放入到一個文件中,方便一次性執行的一個程序文件
統一腳本存放目錄:/server/scripts
推薦使用vim編輯腳本
查看腳本執行過程?:sh -x?腳本
1.2?腳本編輯格式:
#!/bin/bash
#author:dqf
#date:2018/1/11
#ver:1.0
#desc:backup /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???????!=???????????表示a≠b
[ a -gt b ]??????great than?????>????????????表示a>b
[ a -ge b ]??????great equal????>=??????????表示a≥b
[ a -lt b ]??????????????less than???????<????????????表示a<b
[ a -le b ]???????less equal???<=?????????表示a≤b
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中才能配置永久變量
?
轉載于:https://blog.51cto.com/13520758/2059964
總結
以上是生活随笔為你收集整理的Shell脚本入门基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自定义Checkbox让复选框居中对于R
- 下一篇: 写给 Web 开发者的深度学习教程 -