`
omygege
  • 浏览: 1353060 次
文章分类
社区版块
存档分类
最新评论

shell 脚本中传递参数3种方法的比较

 
阅读更多
#!/bin/bash
#extracting command text_text_text_line options as parameters

help_info(){
echo "NAME"
echo "\t$0"
echo "SYNOPSIS"
echo "\t$0 is a shell test about process options"
echo "DESCRIPTION"
echo "\toption like -a -b param1 -c param2 -d"
}

if [ $# -lt 0 ]
then
help_info
fi

nomal_opts_act()
{
echo -e "\n### nomal_opts_act ###\n"

while [ -n "$1" ]
do
case "$1" in
-a)
echo "Found the -a option"
;;
-b)
echo "Found the -b option"
echo "The parameter follow -b is $2"
shift
;;
-c)
echo "Found the -c option"
echo "The parameter follow -c is $2"
shift
;;
-d)
echo "Found the -d option"
;;
*)
echo "$1 is not an option"
;;
esac
shift
done

}


#用shell命令自建的选项解析,可以按照自己的想法实现

#优点:自己定制,没有做不到,只有想不到

#缺点:麻烦


getopt_act()
{
echo -e "\n### getopt_act ###\n"

GETOPTOUT=`getopt ab:c:d "$@"`
set -- $GETOPTOUT
while [ -n "$1" ]
do
case $1 in
-a)
echo "Found the -a option"
;;
-b)
echo "Found the -b option"
echo "The parameter follow -b is "$2""
shift
;;
-c)
echo "Found the -c option"
echo "The parameter follow -c is "$2""
shift
;;
-d)
echo "Found the -d option"
;;
--)
shift
break
;;
*)
echo "Unknow option: "$1""
;;
esac
shift
done

param_index=1
for param in "$@"
do
echo "Parameter $param_index:$param"
param_index=$[ $param_index + 1 ]
done
}


#用getopt命令解析选项和参数

#优点:相对与getopts来说是个半自动解析,自动组织选项和参数,用 -- 符号将选项与参数隔开

#缺点:相对于getopts的缺点

#1.需要与set -- 命令配合,不是必须,需要手动shift

#2.选项参数中不支持空格如 -a -b dog -c "earth moon" -d -f param1 param2 就会解析错误


getopts_act()
{
echo -e "\n### getopts_act ###\n"
while getopts :ab:c:d ARGS
do
case $ARGS in
a)
echo "Found the -a option"
;;
b)
echo "Found the -b option"
echo "The parameter follow -b is $OPTARG"
;;
c)
echo "Found the -c option"
echo "The parameter follow -c is $OPTARG"
;;
d)
echo "Found the -d option"
;;
*)
echo "Unknow option: $ARGS"
;;
esac
done

shift $[ $OPTIND -1 ]
param_index=1
for param in "$@"
do
echo "Parameter $param_index:$param"
param_index=$[ $param_index + 1 ]
done
}


#getopts 命令解析选项和参数

#优点:可在参数中包含空格如:-c "earth moon"

# 选项字母和参数值之间可以没有空格如:-bdog

# 可将未定义的选项绑定到?输出

# Unknow option: ?


nomal_opts_act -a -b dog -c earth -d -f param1 param2
getopts_act -a -b dog -c "earth moon" -d -f param1 param2
getopt_act -a -b dog -c earth -d -f param1 param2
分享到:
评论

相关推荐

    解决Unity不能调用shell脚本传递参数的问题

    解决Unity不能调用shell脚本传递参数的问题

    Shell脚本传递参数的3种方法比较

    主要介绍了Shell脚本传递参数的3种方法比较,本文直接给出代码示例,在代码中包含详细注解,需要的朋友可以参考下

    详解shell中脚本参数传递的两种方式

    方式一:$0,$1,$2.. 采用$0,$1,$2..等方式获取脚本命令行传入的参数,值得注意的是,$0...在shell中执行脚本,结果如下 $ ./test.sh 1 2 #shell中将会输出: 脚本./test.sh 第一个参数1 第二个参数2 1.2 下面是参

    输出执行操作和打印日志的shell脚本实例

    cat /mnt/log_function.sh #!/bin/bash #log function ####log_correct函数打印正确的输出到日志文件 function log_correct () { DATE=`date “+%Y-%m-%d %H:%M:%S”` ####显示打印日志的时间...log_error打印shell脚本

    java调用shell(包含有参数的调用)

    java调用shell 包含简单的编写shell文件 调用含有参数的shell文件

    Shell脚本通过参数名传递参数的实现代码

    主要介绍了Shell脚本通过参数名传递参数的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    shell执行mysql脚本

    在shell脚本中向SQL文件传递参数,并且在shell脚本中执行SQL文件。

    使用runtime实现linux命令行或shell脚本多次调用

    使用runtime, 实现java客户端多次调用linux命令或者shell脚本,并返回对应结果或信息

    shell脚本命令行参数简介

    1、命令行参数向shell脚本传递数据的最基本方式是使用命令行参数。 1)读取参数读取输入的参数的变量为位置参数,位置参数通过标准数字表示,其中$0为程序名称,$1为第一个参数,$2为第二个参数,依次类推,直到$9为...

    Linux/Unix shell 参数传递到SQL脚本

    本文主要讨论了如何将shell脚本的参数传递到SQL脚本之中并执行SQL查询。  有关shell与SQL之间的变量传递,请参考:Linux/Unix shell sql 之间传递变量  1、启动sqlplus时执行脚本并传递参数 robin@SZDB:~/...

    shell脚本学习手册

    1、shell脚本 3 2、shell脚本实践 4 Shell变量 4 1、使用变量 5 2、只读变量 5 3、删除变量 5 4、变量类型 6 5、shell字符串 6 6、Shell数组 7 7、Shell注释 9 Shell传递参数 9 1、实例 9 Shell数组 11 Shell运算符 ...

    Shell脚本学习笔记

    自己整理的Shell脚本学习笔记,脚本实例可直接运行:1. 变量和字符串;2. 传递参数;3. 基本运算符;4. echo&printf;&test;;5. 流程控制;6. 函数;7. 输入输出重定向&文件嵌入

    Shell 传递参数

    我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… 实例 以下实例我们向脚本传递三个参数,并分别...

    Linux Shell脚本通过参数名传递参数值

    Linux常用的命令都可指定参数名和参数值,然而我们怎样才能给自己的shell脚本也采用参数名和参数值这样的方式来获取参数值呢?而不是通过$1,$2这种方式进行获取。下面的例子定义了短参数名和长参数名两种获取参数值...

    Shell – 通过参数名传递参数值

    而且在调用该shell脚本传递参数时容易产出错误。 Linux常用的命令都可指定参数名和参数值,我们怎样才能给自己的shell脚本也采用参数名和参数值这样的方式来获取参数值呢?下面的例子定义了短参数名和长参数名两种...

    shell 脚本 如何双击运行脚本 脚本双击闪退调试 脚本中创建脚本

    脚本创建过程 给脚本传递参数 如何双击运行脚本 脚本双击闪退调试 脚本中创建脚本 shell限制命令运行时间 shell同时运行多条命令

    shell编程 创建shell脚本 shell 基础语法 shell流程控制语法 shell函数

    shell编程 创建shell脚本 ①创建第一个shell脚本②运行shell脚本shell 基础语法 ①变量②变量分类与数组③shell传递参数④基本运算符shell流程控制语法 ①if else条件判断②for循环③while循环④until循环⑤case语句...

Global site tag (gtag.js) - Google Analytics