美文网首页
note_9.2_bash脚本交互

note_9.2_bash脚本交互

作者: 人間失格_430b | 来源:发表于2019-02-17 15:11 被阅读0次

    bash脚本编程之用户交互:

    脚本参数

      位置参数变量
      xxxx.sh argu1 argu2
        引用方式:
        $1, $2, ..., ${10}, ${11}, ...

      轮替:
        shift [n]:位置参数轮替

    特殊变量:

    $0:脚本文件路径本身
    $#:脚本参数的个数
    $*:所有参数单独输出
    $@:所有参数输出一个字符串

    用户交互

    通过键盘输入数据,从而完成变量赋值操作;

        read [option]... [name ...]
            -p 'PROMPT'
            -t TIMEOUT
    

    bash -n /path/to/some_script
    检测脚本中的语法错误

    bash -x /path/to/some_script
    调试执行

            #!/bin/bash
            #
            read -p "Enter a username: " name
            [ -z "$name" ] && echo "a username is needed." && exit 2
    
            read -p "Enter password for $name, [password]: " password
            [ -z "$password" ] && password="password"
    
            if id $name &> /dev/null; then
                echo "$name exists."
            else
            useradd $name
                echo "$password" | passwd --stdin $name &> /dev/null
                echo "Add user $name finished."
            fi          
    
    示例:
        #!/bin/bash
        # Version: 0.0.1
        # Author: xxx
        # Description: read testing
    
        read -p "Enter a disk special file: " diskfile
        [ -z "$diskfile" ] && echo "Fool" && exit 1
    
        if fdisk -l | grep "^Disk $diskfile" &> /dev/null; then
            fdisk -l $diskfile
        else
            echo "Wrong disk special file."
            exit 2
        fi
    

    回顾:

    mount/umount, fstab配置文件、ext文件系统基础原理、read、bash

    /etc/fstab

    ext:super block, GDT, inode table, block bitmap, inode bitmap

    dumpe2fs -h, tune2fs -l

    软链接:l,


    练习:

    1、创建一个20G的文件系统,块大小为2048,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/testing目录,且默认有acl挂载选项;

                (1) 创建20G分区;
                (2) 格式化:
                    mke2fs -t ext4 -b 2048 -L 'TEST' /dev/DEVICE
                (3) 编辑/etc/fstab文件
                LABEL='TEST'    /testing    ext4    defaults,acl    0 0
    

    2、创建一个5G的文件系统,卷标HUGE,要求此分区开机自动挂载至/mogdata目录,文件系统类型为ext3;

    3、写一个脚本,完成如下功能:
    (1) 列出当前系统识别到的所有磁盘设备;
    (2) 如磁盘数量为1,则显示其空间使用信息;
    否则,则显示最后一个磁盘上的空间使用信息;

    if [ $disks -eq 1 ]; then 
        fdisk -l /dev/[hs]da
    else 
        fdisk -l $(fdisk -l /dev/[sh]d[a-z] | grep -o "^Disk /dev/[sh]d[a-]" | tail -1 | cut -d' ' -f2)
    fi
    

    相关文章

      网友评论

          本文标题:note_9.2_bash脚本交互

          本文链接:https://www.haomeiwen.com/subject/bqpgeqtx.html