note_9.2_bash脚本交互

2019-02-17  本文已影响0人  人間失格_430b

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
上一篇下一篇

猜你喜欢

热点阅读