持續(xù)更新中迄埃,今年要好好學習shell呀届案。
原文章連接:shell編程100例
1、編寫hello world腳本
[root@bigdata04 study_shell_100]# cat file1.sh
#!/bin/env bash
#編寫hello world腳本
echo "hello world"
[root@bigdata04 study_shell_100]# file1.sh
hello world
2肃叶、通過位置變量創(chuàng)建 Linux 系統(tǒng)賬戶及密碼
[root@bigdata04 study_shell_100]# cat file2.sh
#!/bin/env bash
#通過位置變量創(chuàng)建linux系統(tǒng)賬戶及密碼
#$1是執(zhí)行腳本的第一個參數(shù)永丝,$2是執(zhí)行腳本的第二個參數(shù)
useradd "$1"
echo "$2" | passwd --stdin "$1"
知識點:
1)建立用戶帳號:useradd 用戶名
[root@bigdata04 study_shell_100]# useradd big
帳號建好之后翰绊,再用 passwd 設(shè)定帳號的密碼
2)更改用戶名密碼:passwd 用戶名
[root@bigdata04 study_shell_100]# passwd big
Changing password for user big.
New password:
BAD PASSWORD: The password is shorter than 7 characters
Retype new password:
passwd: all authentication tokens updated successfully.
3)位置變量
參考文章:shell中$*迅诬,$@腋逆,$#
的區(qū)別
參考文章:linux shell 中的位置變量
$@
和 $*
只在被雙引號包起來的時候才會有差異
01)雙引號括起來的情況:
$*
將所有的參數(shù)認為是一個字段
$@
以 默認為空格 來劃分字段,如果空格在“”里面侈贷,不劃分惩歉。
02)沒有括起來的情況是$@
和$*
一樣的,見到空格就劃分字段铐维。
$#
是 程序的 參數(shù)個數(shù)(不包括$0
)
$?
獲取上一次命令執(zhí)行的返回值柬泽,一般 執(zhí)行 成功 返回0。
$0 $1 $2
以此類推嫁蛇,取命令行參數(shù)锨并,如 test.sh a b c ,則 $0
是 test睬棚,$1
是 a第煮, $2
是b,$3
是c抑党。
案例:
for name in xp wrg lct
do
useradd $name
echo red | passwd --stdin $name
done
解釋:passwd --stdin $name
是更改$name
變量的密碼包警,$name
變量指代上面for循環(huán)的三個用戶xp ,wrg底靠, lct
加上--stdin是接受echo后面的字符串(red)做為密碼害晦,密碼是red
意思就是,創(chuàng)建三個用戶:xp 暑中,wrg壹瘟, lct
密碼都是:red
3、備份日志鳄逾,每周 5 使用 tar 命令備份/var/log 下的所有日志文件
解題思路:第一步編寫日志備份腳本稻轨,第二步編寫定時任務(wù)、執(zhí)行日志備份的腳本
第一步編寫日志備份腳本
[root@bigdata04 study_shell_100]# cat file3.sh
#!/bin/env bash
#需求:每周 5 使用 tar 命令備份/home/study/shell_study/study_shell_100 下的所有文件
#腳本路徑:/home/study
tar czf log-`date +%Y%m%d`.tar.gz ./study_shell_100
第二步編寫定時任務(wù)
# crontab ‐e #編寫計劃任務(wù),執(zhí)行備份腳本
#每周五的3 : 00執(zhí)行腳本file3.sh
00 03 * * 5 /home/study/file3.sh
知識點:
1)壓縮文件
tar命令可以用來壓縮打包單文件雕凹、多個文件殴俱、單個目錄、多個目錄枚抵。
常用格式:
單個文件壓縮打包 tar czvf my.tar file1
多個文件壓縮打包 tar czvf my.tar file1 file2,...
單個目錄壓縮打包 tar czvf my.tar dir1
多個目錄壓縮打包 tar czvf my.tar dir1 dir2
2)定時任務(wù)
Linux下創(chuàng)建定時執(zhí)行任務(wù)可使用crontab线欲,系統(tǒng)默認自帶crontab。
參考文章:設(shè)置定時執(zhí)行任務(wù)
4汽摹、根據(jù)命令询筏,啟動Zookeeper集群 start,關(guān)閉Zookeeper集群竖慧,查看集群狀態(tài)
#嫌套!/bin.bash
#定義腳本解釋器
#根據(jù)命令逆屡,執(zhí)行下面的操作啟動集群 start,關(guān)閉集群 stop踱讨,查看集群狀態(tài) status魏蔗。
case $1 in
"start"{
for i in bigdata0{2..4}
do
ssh i | /home/bigdata/apps/zookeeper-3.4.10/bin/zkServer.sh status
#ssh 10.100.168登陸服務(wù)器
done
#zkServer.sh status
};;
"stop"{
do
ssh i | /home/bigdata/apps/zookeeper-3.4.10/bin/zkServer.sh stop
#ssh 10.100.168登陸服務(wù)器
done
};;
"status"{
do
ssh i | /home/bigdata/apps/zookeeper-3.4.10/bin/zkServer.sh status
#ssh 10.100.168登陸服務(wù)器
done
};;
esac