Linux之部分shell指令碼練習(二)

來源:互聯網
上載者:User

標籤: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



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.