1、读取参数:位置参数变量是标准的数字: $0是程序名, $1是第一个参数, $2是第二个参数...

   #!/bin/bash
# using one command line parameter factorial=
for (( number = ; number <= $; number++ ))
do
factorial=$[ $factorial * $number ]
done
echo The factorial of $ is $factorial

执行:

# ./test1.sh
The factorial of is

2、输入多个命令行选项,则在命令行上每个参数都必须用空格分开:

   #!/bin/bash
# testing two command line parameters total=$[ $ * $ ]
echo The first parameter is $
echo The second parameter is $
echo The total value is $total

执行:

# ./test2.sh
The first parameter is
The second parameter is
The total value is

3、如果脚本需要多个9个命令行参数,在变量数字周围加花括号:

   #!/bin/bash
# handling lots of parameters total=$[ ${} * ${} ]
echo The tenth parameter is ${}.
echo The eleventh parameter is ${}.
echo The total is $total

执行:

# ./test4.sh
The tenth parameter is .
The eleventh parameter is .
The total is

4、测试参数

   #!/bin/bash
# testing parameters before use if [ -n "$1" ] # -n 参数测试 $1(第一个参数)是否为null
then
echo Hello $, glad to meet you.
else
echo "Sorry, you did not identify yourself"
fi

执行:

# ./test7.sh
Sorry, you did not identify yourself ./test7.sh frank
Hello frank, glad to meet you.

5、特殊参数变量(参数计数 $#)

   #!/bin/bash
# getting the number of parameters
echo There were $# parameters supplied.

执行:

# ./test8.sh
There were parameters supplied. ./test8.sh 1 2 3
There were 3 parameters supplied.

6、使用参数前测试参数的总数

   #!/bin/bash
# testing parameters if [ $# -ne ]
then
echo Usage: test a b
else
total=$[ $ + $ ]
echo The total is $total
fi

执行:

# ./test9.sh
The total is 3 # ./test9.sh
Usage: test a b

7、不需要知道有多少个参数个数,抓取最后一个参数 ${!#}

   #!/bin/bash
params=$#
echo The number of parameter is $params
echo The last parameter is ${!#}

执行:

# sh test10.sh
The number of parameter is #参数的总个数
The last parameter is 4 #最后一个参数的值

8、$*  $@变量提供了对所有参数的快速访问, $*变量会将命令行上提供的所有参数当作单个单词保存,$@变量会将命令行上提供的所有参数当做同一个字符串中多个独立的词。

   #!/bin/bash
# testing $* and $@ echo "Using the \$* method: $*"
echo "Using the \$@ method: $@"

执行:

# ./test11 rich katie jessica
Using the $* method: rich katie jessica
Using the $@ method: rich katie jessica

差异:

   #!/bin/bash
# testing $* and $@
count=1 #赋值的时候注意不要有空格
for param in "$*" #将所有参数变为一个参数
do
echo "\$* parameter #$count = $param"
count=$[ $count + ]
done count=
for param in "$@" #各个参数独立
do
echo "\$@ parameter #$count = $param"
count=$[ $count + ]
done
~

执行:

# ./test12.sh rich barbara katie jessica
$* parameter # = rich barbara katie jessica
$@ parameter # = rich
$@ parameter # = barbara
$@ parameter # = katie
$@ parameter # = jessica

可见, $*会将所有的参数当成单个单数,而$@变量会单独处理每个参数。

9、shift的用法,遍历命令行参数

   #!/bin/bash
#demonstrating the shift command count=
while [ -n "$1" ] #注意要加冒号
do
echo "parameter #$count = $1"
count=$[ $count + ]
shift #参数变量逐次减一
done
~

执行:

# ./test13.sh a b c d e
parameter # = a
parameter # = b
parameter # = c
parameter # = d
parameter # = e

10、shift命令提供一个参数执行多位移动

   #!/bin/bash
# demonstrating a multi-position shift echo "The original parameters: $*"
shift
echo "Here's the new first parameter: $1"

执行:

# ./test14.sh
The original parameters:
Here's the new first parameter: 3

每天写点shell--命令行参数的更多相关文章

  1. shell 命令行参数(getopt和getopts)

    getopt 命令 使用getopt命令,可以解析任何命令行选项和参数,但是用法比较复杂.getopt的命令用法如下: $ getopt --help 用法: getopt optstring par ...

  2. shell 命令行参数(基本)

    命令行参数 $0 表示程序名.$1 至 \$9则是位置参数.$# 表示参数的个数.$* 将所有参数当做一个整体来引用$@ 把每个参数作为一个字符串返回,可以使用for循环来遍历$? 最近一个执行的命令 ...

  3. 写个C#命令行参数解析的小工具

    最近测试工作做的比较多因此时常要创建一些控制台类型的应用程序.因为程序有不同的参数开关,需要在程序启动的时候通过命令行来给程序传递各种开关和参数.直接操作args有些不方便,所以就写了个解析参数的小工 ...

  4. python 命令行参数学习(二)

    照着例子看看打打,码了就会.写了个命令行参数调用进行运算的脚本. 参考文章链接:http://www.jianshu.com/p/a50aead61319 #-*-coding:utf-8-*- __ ...

  5. kettle文件自动化部署(shell脚本执行):命令行参数传入

    shell脚本中调用kitchen 和 pan去执行,job和transformation文件.分 windows和 dos系统两种. 举个简单的小例子 shell脚本: export JAVA_HO ...

  6. Shell 命令行,写一个自动整理 ~/Downloads/ 文件夹下文件的脚本

    Shell 命令行,写一个自动整理 ~/Downloads/ 文件夹下文件的脚本 在 mac 或者 linux 系统中,我们的浏览器或者其他下载软件下载的文件全部都下载再 ~/Downloads/ 文 ...

  7. Shell 参数(2) --解析命令行参数工具:getopts/getopt

    getopt 与 getopts 都是 Bash 中用来获取与分析命令行参数的工具,常用在 Shell 脚本中被用来分析脚本参数. 两者的比较 (1)getopts 是 Shell 内建命令,geto ...

  8. Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

    特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2. $# 传递给脚本或函数的参数个数. $* 传 ...

  9. Linux Shell 05 位置变量(命令行参数)

    在Linux shell 脚本中可能会用到一些命令行参数,常见如下: $0:脚本名称 $#:执行脚本时传入的参数个数,不包括脚本名称 $@:所有参数 $*:所有参数 $1...$9:第1个参数.... ...

  10. 【Shell脚本学习8】Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

    前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: $echo $$ 运 ...

随机推荐

  1. 4.MySQL 主主(m-m) 同步生产库标准同步操作实施流程

    通过MySQL参数配置使用主主前提: 1.表的主键自增. ################################################################# #m1-m ...

  2. Docker--在Docker中运行应用

    Docker--在Docker中运行应用 一个交互式的容器 既然在Docker提供的是一个容器,底层支撑着一个基本的操作系统环境,那我们就可以通过Docker进入到容器内部与系统进行交互. 据我理解: ...

  3. [LeetCode] Combine Two Tables 联合两表

    Table: Person +-------------+---------+ | Column Name | Type | +-------------+---------+ | PersonId ...

  4. Linux 中 SVN 重启关闭

    a.启动SVN svnserve -d -r /A/B/svn/ 其中 -d 表示守护进程, -r 表示在后台执行 /A/B/svn/ 为svn的安装目录 b.关闭SVN 这里采取linux杀死进程的 ...

  5. C# 提交网页请求时出现如下错误: System.Net.WebException: 操作超时

    原因一: 连接超时时间 Timeout 以及写入Post数据超时时间 ReadWriteTimeout 设置得太短,一般要设置大于6000ms. 原因二: Expect100Continue 属性的值 ...

  6. jquery 的一些基本操作

    日常使用中的操作记录,持续更新中: ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Fire ...

  7. from表单提交数组

    页面代码: function submitForm(){ var categoryArray = new Array(); var $ss = $("select[name=industry ...

  8. Django框架

    一.首先,到底什么是框架? 想要回答这个问题,我们要慢慢来. ①首先从DRY原则开始说起 Don't Repeat Yourself,不要重复你的代码. DRY原则的重要性怎么提都不过分,很多人说编程 ...

  9. com/android/dx/command/dexer/Main : Unsupported major.minor version 52.0

    这是由于JDK版本不一致造成的,指的是高版本的JDK编译的class不能放在低版本的JDK上运行. Version 52,表示JDK8编译的class不能运行在JDK7上,所以需要在本地安装JDK8.

  10. 基于redis 实现分布式锁的方案

    在电商项目中,经常有秒杀这样的活动促销,在并发访问下,很容易出现上述问题.如果在库存操作上,加锁就可以避免库存卖超的问题.分布式锁使分布式系统之间同步访问共享资源的一种方式 基于redis实现分布式锁 ...