while语句:
while CONDITION;do
statment
done
进入循环:满足条件
退出循环:条件不满足
until语句:
until CONDITION;do
statment
done
进入循环:条件不满足
退出循环:满足条件
1、将输入的字符变为大写
#!/bin/bash
#
read -p "INPUT someting:" STRING
while [ $STRING != 'quit' ];do
echo $STRING | tr 'a-z' 'A-Z'
read -p "Again Input someting:" STRING
done
#!/bin/bash
#
read -p "INPUT someting:" STRING
until [ $STRING = 'quit' ];do
echo $STRING | tr 'a-z' 'A-Z'
read -p "Again Input someting:" STRING
done
2、检查haha用户是否登陆
检测haha用户是否登陆
#!/bin/bash
#
who |grep "haha" &> /dev/null
RETVAL=$?
until [ $RETVAL -eq 0 ];do
echo "haha is not come"
sleep 5
who |grep "haha" &> /dev/null
RETVAL=$?
done
echo "haha is logged in."
#!/bin/bash
#
until who |grep "haha" &> /dev/null; do
echo "haha is not come"
sleep 5
done
echo "haha is logged in."
3、for循环补充:
计算100以内整数的和:
#!/bin/bash
#
declare -i SUM=0
for I in {1..100};do
let SUM+=$I
done
echo $SUM
declare -i SUM2=0
for ((J=1;J<=100;J++));do
let SUM2=$J
done
echo $SUM2
100以内所有偶数的和
#!/bin/bash
#
declare -i SUM2=0
for ((J=2;J<=100;J+=2));do
let SUM2=$J
done
echo $SUM2
100以内所有积数的和
#!/bin/bash
#
declare -i SUM2=0
for ((J=1;J<=100;J+=2));do
let SUM2=$J
done
echo $SUM2
4、写一个脚本划分3个分区并且格式化
#!/bin/bash
#
echo "Initial a disk..."
echo -e "\033[31mWarning:\033[0m"
fdisk -l 2> /dev/null |grep -o "^Disk /dev/[sh]d[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/[sh]d[a-z]"|grep "^Disk $PARTDISK$" &> /dev/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
for I in `mount |grep "/dev/sdb" |awk '{print $1}'`;do
umount $I
echo "$I umount ok."
done
dd if=/dev/zero of=$PARTDISK bs=512 count=1 &>/dev/null
sync
echo 'n
p
1
+20M
n
p
2
+512M
n
p
3
+128M
t
3
82
w' |fdisk $PARTDISK &>/dev/null
fi
partx -a $PARTDISK &>/dev/null
sync
sleep 2
mkfs -j ${PARTDISK}1 &> /dev/null
mkfs -j ${PARTDISK}2 &> /dev/null
mkfs -j ${PARTDISK}3 &> /dev/null
5、压缩文件的脚本
#!/bin/bash
#
read -p "Three files:" FILE1 FILE2 FILE3
read -p "DEST:"
read -p "Compress[gzip|bzip|xz]:" COMP
case $COMP in
gzip)
tar -zcf ${DEST}.tar.gz $FILE1 $FILE2 $FILE3
;;
bzip)
tar -jcf ${DEST}.tar.bz2 $FILE1 $FILE2 $FILE3
;;
xz)
tar -cf ${DEST}.tar $FILE1 $FILE2 $FILE3
xz ${DEST}.tar
;;
*)
echo "Unknow options."
exit 9
;;
esac
#/bin/bash
#
for I in `mount |grep "/dev/sdb" |awk '{print $1}'`;do
umount $I
echo "$I umount ok."
done