Shell 传参的多种方式

  1. 使用$1 $2 这种类似占位符的方式
# 命令行调用
start.sh 8080 9090
# 脚本中获取
port1=$1 # 8080
port2=$2 # 9090

可以看出来这种方式使用起来很简单,但灵活性太差,比如我只想传第二个参数,第一个使用默认值,这个就不行,所以就有第二种,指定参数传递

  1. 指定参数 getopts(shell内置命令)
#命令行调用
start.sh -a 8080 -b 9090
# 脚本中获取
while getopts "d:b:h" arg #选项后面的冒号表示该选项需要参数
do
case $arg in
d)
DEBUG=$OPTARG
echo "debug: $OPTARG" #参数存在$OPTARG中
;;
b)
DEBUG_PORT=$OPTARG
echo "DEBUG_PORT: $OPTARG"
;;
h)
echo "-d: debug enable, true or false, default is false"
echo "-b: debug port, default is 8000"
echo "-p: web port ,default is 8080"
exit 1
;;
?) #当有不认识的选项的时候arg为?
echo "unkonw argument"
exit 1
;;
esac
done

注意:这种参数名只能是一个字母(其它符号没验证过),参数名后面紧接着的内容会被当做value值

上面这种方式可以满足我们大多数的应用场景了,但是由于参数名的限制,如果参数太多,这种命令就不太直观,所以引申出第三种,长参数选项。

  1. 长参数选项 getopt (外部binary文件)

    暂未应用到。。。


Shell传参的多种方式的更多相关文章

  1. pytest用例传参的多种方式

    1.接收外部传参 *函数获取需要的参数,再传入 *函数获登录信息,直接使用 2.其它方式传参 *依据dict取值 *tuple数组

  2. python函数 传参的多种方式 解读

    1.函数的参数在哪里定义 在python中定义函数的时候,函数名后面的括号里就是用来定义参数的,如果有多个参数的话,那么参数之间直接用逗号, 隔开 案列: 2.带参数的函数调用: 函数定义了参数,那么 ...

  3. Linux:可执行程序的Shell传参格式规范

    1. Linux下可执行程序的Shell传参格式规范 Linux下的可执行程序在运行时经常需要传一些参数,而这些参数是有规范的.包括我们自己写的在Linux系统下运行的Shell脚本.Python脚本 ...

  4. 设置 Ext.data.Store 传参的请求方式

    设置 Ext.data.Store 传参的请求方式 1.extjs 给怎么给panel设背景色 设置bodyStyle:'background:#ffc;padding:10px;', var res ...

  5. Extjs 项目中常用的小技巧,也许你用得着(5)--设置 Ext.data.Store 传参的请求方式

    1.extjs 给怎么给panel设背景色 设置bodyStyle:'background:#ffc;padding:10px;', var resultsPanel = Ext.create('Ex ...

  6. shell传参和变量赋值

    1.变量赋值方式 (1)方式1--直接赋值(=) (2)方式2--read交互式赋值 (3)方式3--脚本传参赋值 2.read read -p "请输入你的名字和年龄:" nam ...

  7. shell传参给matlab问题解决办法

    之前需要通过shell脚本传参给matlab程序,但是遇到一些问题,现将我遇到的问题分享出来,给遇到同样问题的人一些借鉴. shell部分脚本Execl.sh: /usr/bin/python /ho ...

  8. 路由组件传参-props解耦方式(主要)

    在组件中使用 $route 会使之与其对应路由形成高度耦合,从而使组件只能在某些特定的 URL 上使用,限制了其灵活性. 使用 props 将组件和路由解耦: 取代与 $route 的耦合 const ...

  9. 第七章 路由 76 路由传参-使用params方式传递路由参数

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

随机推荐

  1. Spring获取HttpServletRequest

    ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()

  2. viewDidLayoutSubviews在ios7上导致应用崩溃

    在ios8中使用viewDidLayoutSubviews,应用正常运行,没有问题,但是应用在ios7上运行的时候,报错,导致应用崩溃,错误信息类似: Cannot find executable f ...

  3. 解决scrollView中嵌套viewPager的冲突问题

    很简单,在外层ScrollView中添加android:fillViewport="true"属性,然后给viewPager添加一个固定高度

  4. CSS基础2——选择器

    前面说过样式规则.也知道了样式规则语法形式为:选择器+声明块 如:div{ color:black:padding:10px; }   div即表示选择器(此处是元素选择器),花括号里的内容就是声明块 ...

  5. poj3411--Paid Roads(bfs+状压)

    题目链接:id=3411">点击打开链接 题目大意:有n个点.m条有向边,经过边须要一个花费,a b c p q代表 a到b的一条道路,假设经过这条边之前经过c点,那么须要p的花费,否 ...

  6. ApplicationContextRunner如何简化自动配置测试

    1. 概览 众所周知,自动配置是Spring Boot的关键功能之一, 但测试自动配置可能会很棘手. 在以下部分中,我们将展示ApplicationContextRunner如何简化自动配置测试. 2 ...

  7. iOS 常用图尺寸 汇总

    iCON 准备一张1024x1024尺寸的图,打开链接 http://www.atool.org/ios_logo.php 在线批量生成各种尺寸的图片 启动图LaunchImage 640x960 2 ...

  8. bbb u-boot SPI 启动

    beagle bone black的u-boot编译时已经为SPI准备好了 MLO.byteswap,这个文件应该直接写入到SPI flash的偏移0位置,根据am335x的手册,SPI内可以保存多份 ...

  9. who 查看系统登录用户

    who  查看所有登录用户 whoami   查看自己的登陆名 w users last

  10. C#多线程简单例子讲解

    C#多线程简单例子讲解 标签: 多线程c#threadobjectcallbacktimer 分类: C#(7) 转载网址:http://www.knowsky.com/540518.html .NE ...