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,如需转载请自行联系原作者



相关文章
|
2月前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
3月前
|
Kubernetes Shell Docker
在K8S中,如果容器没有bash命令,如何进⼊容器排查问题?
在K8S中,如果容器没有bash命令,如何进⼊容器排查问题?
|
3月前
|
Unix Shell Linux
在Linux中,什么是 BASH?
在Linux中,什么是 BASH?
|
3月前
|
Linux
Linux命令行文档查看cat、less、more、head、tail和图片查看
Linux命令行文档查看cat、less、more、head、tail和图片查看
54 0
|
3月前
|
Shell Linux
在Linux中,哪⼀个bash内置命令能够进行数学运算?
在Linux中,哪⼀个bash内置命令能够进行数学运算?
|
3月前
|
缓存 Shell Linux
在Linux中,bash shell 中的 hash 命令有什么作用?
在Linux中,bash shell 中的 hash 命令有什么作用?
|
3月前
|
人工智能 物联网 Shell
在Linux中,BASH 和 DOS之间的区别是什么?
在Linux中,BASH 和 DOS之间的区别是什么?
|
3月前
|
Unix Shell Linux
在Linux中,什么是Bash脚本,并且如何使用它。
在Linux中,什么是Bash脚本,并且如何使用它。
|
3月前
|
Shell Linux
在Linux中,使用bash shell实现条件判断和循环结构的例子是什么样的?
在Linux中,使用bash shell实现条件判断和循环结构的例子是什么样的?
|
6月前
|
监控 安全 Shell
防止员工泄密的措施:在Linux环境下使用Bash脚本实现日志监控
在Linux环境下,为防止员工泄密,本文提出使用Bash脚本进行日志监控。脚本会定期检查系统日志文件,搜索敏感关键词(如&quot;password&quot;、&quot;confidential&quot;、&quot;secret&quot;),并将匹配项记录到临时日志文件。当检测到可疑活动时,脚本通过curl自动将数据POST到公司内部网站进行分析处理,增强信息安全防护。
173 0