標籤:something linux
while CONDITION;do
statement
done
進入迴圈:條件滿足
退出迴圈:條件不滿足
until CONDITION;do
statment
...
done
#!/bin/bash
#
read -p "Input something:" STRING
while[ $STRING != ‘quit‘];do
echo $STRING | tr ‘a-z‘ ‘A-Z‘
read -p "Input something:" STRING
done
#!/bin/bash
#
read -p "Input something:" STRING
until [$STRING == ‘quit‘];do
echo $STRING | tr ‘a-z‘ ‘A-Z‘
read -p "Input something:" STRING
done
#!/bin/bash
所以使用的while的時候都可以使用until。
#!/bin/bash
#
who | grep "hadoop" &>/dev/null
RETVAL=$?
until [$RETVAL -eq 0];do
echo "hadoop has not come"
sleep 5
who | grep "hadoop" &>/dev/null
RETVAL=$?
done
echo "hadoop is loggd in"
執行命令狀態傳回值可以直接引用,並且可以不用加引號。
如果條件部分是執行命令的話,就需要引號。
for迴圈
for 變數 in 列表;do
迴圈體
done
近C語言的寫法
for((expr1;expr2;expr3)); do
迴圈體
done
#!/bin/bash
#
declare -i SUM=0
for I in {1..100};do
let SUM+=$I
done
echo $SUM
#!/bin/bash
#
declare -i SUM2=0
for((J=1; J<=100; J++));do
let SUM2+=$J
done
echo $SUM
硬碟,假設它為/dev/sdb),為指定的硬碟建立分區。
1.列出當前系統上所有的硬碟,讓使用者選擇,如果選擇quit則退出指令碼;如果使用者選擇錯誤,就讓使用者重新選擇。
2.當使用者選擇後,提醒使用者確認接下來的操作可能會損壞資料,並請使用者確認;如果使用者選擇y就繼續;否則,就讓使用者重新選擇。
3.抹除那塊硬碟的所有分區(提示:抹除所有分區執行sync命令,並讓指令碼睡眠3秒鐘後再分區),並為其建立三個主要磁碟分割,第一個為20M。第二個為512M,第三個為128M,且第三為swap分區類型(提示:將分區模組通過echo傳送fdisk即可實現)
#!/bin/bash
#
echo "Initial a disk..."
echo -e "033[31mWarning:\033[0m"
fdisk -l 2> /dv/null | grep -o "^Disk /dev/[sb][a-z]"
read -p "Your choice:" PARTDISK
if [ $PARTDISK == ‘quit‘ ];then
echo "quit"
exit 7
fi
until fdisk -l 2> /dev/null | grep -o "^Disk /dev/[sb][a-z]" | grep "Disk $PARTDISK" &>/dv/null;do
read -p "Wrong option.your choice aging:" PARTDISK
done
read -p "Will destroy all data,continue:" CHOICE
until [ $CHOICE == ‘y‘ -o $CHOICE == ‘n‘ ];do
read -p "Will destroy all data,continue:" CHOICE
done
if [ $CHOICE == ‘n‘ ];then
echo "Quit"
exit 9
else
dd if=/dev/zero of=$PARTDISK bs=512 count=1
sync
sleep 3
echo ‘n
p
1
+20M
n
p
2
+512M
n
p
3
+128M
t
3
82
w‘ | fdisk $PARTDISK &>/dev/null
sync
sleep 2
partprobe $PARTDISK &>/dev/null
mke2fs -j ${PARTDISK} &>/dev/null
mke2fs -j ${PARTDISK}1 &>/dev/null
mke2fs -j ${PARTDISK}2 &>/dev/null
fi