linux命令:bash脚本选项使用cat <<EOF使用 getopts选项描述

简介:

getopts:用于描述相关信息。

  选项: OPTARG  、  OPTIND


bash脚本综合实验:

1、如何利用脚本,在创建脚本时,自动把相关选项添加到新的脚本中,且自动在保存

脚本后检测是否有语法错误,选择是否继续编辑还是退出等操作且描述信息可以自己定义。


 vim mkscript.sh

#!/bin/bash

# Name: mkscript   脚本名称

# Description: Create script   脚本描述

# Author: A dong    作者

# Version:0.0.1    版本号

# Datatime: 04/06/17 14:50:00

# Usage:mkscript FILENAME

while getopts ":d:" OPT; do

  case $OPT in

   d)

    DESC=$OPTARG ;;

   \?)

    echo "Usage: mkscript [ -d DESCRIPTION ] FILENAME" ;;

  esac

done


shift $[OPTIND-1]


if ! grep "[^[:space:]]" $1 &> /dev/null ; then

 cat > $1 << EOF

#!/bin/bash

# Name: `basename $1`  

# Description: $DESC   

# Author: A dong   

# Version:0.0.1    

# Datatime: `date "+%F %T"`

# Usage:`basename $1`


EOF

fi


vim + $1


until bash -n $1 &> /dev/null ;do

   read -p "Syntax error,q|Q for quiting,others for editing: " CHOESE

  case $CHOESE in 

   q|Q)

     echo "Quiting..."

     exit 8

     ;;

    *)

     vim + $1

     ;;

 esac

done


chmod +x $1


脚本执行结果如下:自动生成相关的描述信息

[root@john script]# bash mkscript.sh -d "opt test" optest.sh

#!/bin/bash

# Name: optest.sh  

# Description: opt test 

# Author: A dong  

# Version:0.0.1    

# Datatime: 2017-04-07 09:42:59

# Usage:optest.sh

 


 

2.写一个脚本getinterface.sh,脚本可以接受选项(i,I,a),完成以下任务:

 (1)使用以下形式:getinterface.sh [-i interface|-I IP|-a]

 (2)当用户使用-i选项时,显示其指定网卡的IP地址; 

 (3)当用户使用-I选项时,显示其后面的IP地址所属的网络接口;

 (4)当用户单独使用-a选项时,显示所有网络接口及其IP地址(lo除外);


vim showip.sh


#!/bin/bash

# Name: getopts.sh  

# Description: getopts OPTIND   

# Author: A dong   

# Version:0.0.1    

# Datatime: 2017-04-07 15:00:38

# Usage:getopts.sh

 SHOWIP () {

   if ! ifconfig |grep -o "^[^[:space:]]\{1,\}"|grep $1 &>/dev/null ;then

     return 13

   fi

     echo -n "$1: "

    ifconfig $1 |grep -o "inet addr:[0-9\.]\{1,\}"|cut -d: -f2

  

  }

  

 SHOWETHER () {

   if ! ifconfig |grep -o "[0-9\.]\{1,\}"|cut -d: -f2 |grep $1 &> /dev/null ;then

       return 14

   fi 

     echo -n "$1: "

   ifconfig |grep -B 1 "$1"|grep -o "^[^[:space:]]\{1,\}"

  }

  

   USAGE () {

     echo "getopts.sh <-i interface|-I IP|-a ALL>"

  }

  

 while getopts ":i:I:a:" SWITCH; do

   case $SWITCH in

     i)

      SHOWIP $OPTARG

      [ $? -eq 13 ] && echo "Wrong ethercard."

      ;;

     I)

      SHOWETHER $OPTARG

     [ $? -eq 14 ] && echo "Wrong IP."

      ;;

     a)

      ifconfig | grep -A 1 "^[^[:space:]]\{1,\}"|grep -A 1 "eth[[:alnum:]]"

      ;;

     *)

       USAGE ;;

    esac

  done

 














本文转自wang650108151CTO博客,原文链接: http://blog.51cto.com/woyaoxuelinux/1914034,如需转载请自行联系原作者



相关文章
|
16天前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
44 14
Linux 10 个“who”命令示例
|
4天前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
57 20
|
5天前
|
网络协议 Linux 应用服务中间件
kali的常用命令汇总Linux
kali的常用命令汇总linux
26 7
|
24天前
|
Linux 数据库
Linux中第一次使用locate命令报错?????
在Linux CentOS7系统中,使用`locate`命令时出现“command not found”错误,原因是缺少`mlocate`包。解决方法是通过`yum install mlocate -y`或`apt-get install mlocate`安装该包,并执行`updatedb`更新数据库以解决后续的“can not stat”错误。
31 9
|
23天前
|
监控 网络协议 Linux
Linux netstat 命令详解
Linux netstat 命令详解
|
关系型数据库 MySQL Shell
【Linux命令】-bash: mysql: command not found
【Linux命令】-bash: mysql: command not found
143 0
|
Shell Linux
Linux pip命令报错 -bash: pip: command not found
Linux pip命令报错 -bash: pip: command not found
367 0
|
Linux
LINUX用户执行过的命令,保存在.bash_history
LINUX用户执行过的命令,保存在.bash_history
102 0
|
Shell Linux
【快速入门Linux】3_Linux命令—终端命令格式、命令帮助信息、bash标准输入输出
【快速入门Linux】3_Linux命令—终端命令格式、命令帮助信息、bash标准输入输出
139 0
【快速入门Linux】3_Linux命令—终端命令格式、命令帮助信息、bash标准输入输出
|
Linux
LINUX用户执行过的命令,保存在.bash_history
LINUX用户执行过的命令,保存在.bash_history
154 0
下一篇
DataWorks