腳本控制結構:
順序
選擇:if、case
循環:while、until、for
while CONDITION; do
statement;
...
done
滿足條件循環,不滿足則退出
until CONDITION ; do
statement;
不滿足條件循環,滿足則退出
for ((expr1;expr2;expr3));do list; done
for 變量 in 清單;
do
表達式 ;
寫一個腳本:
1.通過ping指令測試192.168.0.151到192.168.0.254之間的所有主機是否線上
如果線上,就顯示“ip is up”,其中的ip要換為真正的ip,并用綠色表示
如果不線上,就顯示“ip is down”,其中的ip要換為真正的ip,并用紅色表示
要求:分别使用while、until和for實作。
#!/bin/bash
i=151
while [ $i -le 254 ] ;do
ping -c1 -w1 192.168.0.$i &>/dev/null && echo -e "\033[40;32m192.168.0.$i is up\033[0m"||echo -e "\033[40;31m192.168.1.$i is down\033[0m"
i=$[$i+1]
done
until [ $i -gt 254 ] ;do
for i in {151..254}; do
awk用法簡介:
awk是一個強大的文本分析工具,相對于grep的查找,sed的編輯,awk在其對資料分析并生成報告時,顯得尤為強大。簡單來說awk就是把檔案逐行的讀入,以空格為預設分隔符将每行切片,切開的部分再進行各種分析處理。
格式:awk 'PATTERN{ACTION}' file
$1:表示第一片,同理$2表示第二片...
NF:表示awk總共把這行分成了多少片,$NF則表示最後一片
[root@logstash magelearning]# df -h|awk '{print $2}'
Size
20G
234M
190M
[root@logstash magelearning]# df -h|awk /dev/'{print $2}'
[root@logstash magelearning]# df -h|awk /sda'{print $2}'
awk: /sda{print $2}
awk: ^ unterminated regexp
[root@logstash magelearning]# df -h|awk /sda/'{print $2}'
[root@logstash magelearning]# df -h|awk '/sda/{print $2}'
[root@logstash magelearning]# df -h|awk '/sda/{print $2,$3}'
20G 4.0G
190M 41M
[root@logstash magelearning]# df -h|awk '/sda/{print $0,$2,$3}'
/dev/sda2 20G 4.0G 15G 22% / 20G 4.0G
/dev/sda1 190M 41M 140M 23% /boot 190M 41M
[root@logstash magelearning]# df -h|awk '/sda/{print $0}'
/dev/sda2 20G 4.0G 15G 22% /
/dev/sda1 190M 41M 140M 23% /boot
[root@logstash magelearning]# df -h|awk '/sda/{print NF}'
6
[root@logstash magelearning]# df -h|awk '/sda/{print $NF}'
/
/boot
[root@logstash magelearning]# df -h|awk '/sda/'
寫一個腳本(前提:請為虛拟機新增一塊硬碟,假設它為/dev/sdb),為指定的硬碟建立分區:
列出目前系統上所有的磁盤,讓使用者選擇,如果選擇q則退出腳本,如果使用者選擇錯誤,則讓使用者重新選擇
當使用者選擇後,提醒使用者确認接下來的操作可能會損壞資料,并請使用者确認,如果使用者選擇y就繼續,否則,讓使用者重新選擇:
抹除那塊硬碟上的所有分區(提示,抹除所有分區後執行sync指令,并讓腳本睡眠3s後再分區;并為其建立三個主分區,第一個為20M,第二個為512M,第三個為128M,且第三個為swap分區類型;(提示将分區指令,echo給fdisk 即可實作)
while : ; do
list=`fdisk -l|grep '^Disk /dev/[sh]d[ab]'|awk '{print $2}'|awk -F : '{print $1}'`
until fdisk -l|grep '^Disk /dev/[sh]d[ab]'|awk '{print $2}'|awk -F : '{print $1}'|grep "^$DISK$"; do
echo "please choice a disk:
$list
[q|Q] quit.."
read -p "your choice :" DISK
if [ $DISK == 'q' ] || [ $DISK == 'Q' ];then
echo "quiting..."
exit 0
fi
echo $DISK
echo -e "\033[40;31mit will destroy all data,Are you want to continue? [Y/N]\033[0m"
read CHOICE
if [ $CHOICE == 'Y' ] || [ $CHOICE == 'y' ];then
dd if=/dev/zero of=$DISK bs=512 count=1
sync
sleep 3
echo "n
p
1
+20M
n
2
+512M
3
+128M
t
82
w
"|fdisk $DISK
DISK=''
本文轉自biao007h51CTO部落格,原文連結:http://blog.51cto.com/linzb/1752110 ,如需轉載請自行聯系原作者