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
?
轉載于:https://blog.51cto.com/woyaoxuelinux/1914034
總結
以上是生活随笔為你收集整理的linux命令:bash脚本选项使用cat EOF使用 getopts选项描述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 活动选择的贪心算法与动态规划
- 下一篇: 关于Element中的clientWid