zoukankan      html  css  js  c++  java
  • Shell 编程(实例二)

    创建一个脚本,为指定硬盘创建分区

    1、列出当前系统所有磁盘,让用户选择,如果选择quit则退出脚本;如果选择错误,则重新选择

    2、当用户选择完成后,询问是否继续

    3、抹除选择磁盘上的分区,为其创建三个分区,每个分区100M

    #!/bin/bash
    
    #获得当前主机识别磁盘
    fdisk -l | grep "^Disk /dev/sd[ab]" | cut -d':' -f1
    read -p "please chioce the disk you want to partation :"  PARTDISK
    
    #如果输入quit则退出脚本
    if [ $PARTDISK == 'quit' ]
    then
            exit 0
    fi
    
    #判断用户输入磁盘是否存在
    until  fdisk -l | grep "^Disk /dev/sd[ab]" | cut -d':' -f1 | grep "^Disk $PARTDISK$" &> /dev/null 
    do
            read -p "error , input again:" PARTDISK
    done
    
    #是否确认执行
    read -p "are you affirm to partation : (y/n)" CHOICE
    until [ $CHOICE == 'y' -o $CHOICE == 'n' ]
    do
            read -p "are you affirm to partation : (y/n)" CHOICE
    done
    
    if [ $CHOICE == 'n' ]
    then
            exit 0
    else
            #抹除磁盘上所有分区
            dd if=/dev/zero of=$PARTDISK bs=512 count=1 &> /dev/null
            #同步到磁盘
            sync
            #等待磁盘同步完成
            sleep 3
    #创建分区
            echo 'n
    p
    1
    
    +100M
    n
    p
    2
    
    +100M
    n
    p
    3
    
    +100M
    w' | fdisk $PARTDISK
            sync
            sleep 3
    
    partprobe $PARTDISK
    mke2fs -j ${PARTDISK}1
    mke2fs -j ${PARTDISK}2
    mke2fs -j ${PARTDISK}3
    fi        

    总结:

      1、循环条件体中如果是要获得命令执行是否成功,则可以直接输入命令

      2、使用交互式命令在脚本中可以通过 echo ... | 命令 的方式执行

      3、dd if=/dev/zero of=/dev/磁盘  通过改写MBR中分区表抹除磁盘分区

  • 相关阅读:
    .NET 压缩解压库发布,支持进度查看
    WPF 蒙罩层 LoadingPage
    WPF如何用TreeView制作好友列表、播放列表
    WPF多线程UI更新——两种方法
    .NET责任链模式(混合单例模式,模板方法模式)-----制作与扩展能力验证
    .NET单例模式-------各种写法&&验证
    迭代器模式和组合模式混用
    正确理解DTO、值对象和POCO
    理解POCO
    VM
  • 原文地址:https://www.cnblogs.com/xiaoliwang/p/9023171.html
Copyright © 2011-2022 走看看