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. 3-linux下部署tomcat应用

    linux下部署tomcat应用 相关软件下载 jdk      http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downlo ...

  2. 压缩和解压文件:tar gzip bzip2 compress(转)

    tar[必要参数][选择参数][文件] 压缩:tar -czvf filename.tar.gz targetfile解压:tar -zxvf filename.tar.gz参数说明: -c 建立新的 ...

  3. BZOJ 3144: [Hnoi2013]切糕

    3144: [Hnoi2013]切糕 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1495  Solved: 819[Submit][Status] ...

  4. win10+vs2013+cuda8.0+caffe

    1,首先说下环境和配置 配置: 环境:windows10,vs2013 community,cuda8.0,caffe,cudnn4 注意:先要安装好显卡驱动(我的显卡是1070),这里的例子只开通了 ...

  5. [LeetCode] Assign Cookies 分点心

    Assume you are an awesome parent and want to give your children some cookies. But, you should give e ...

  6. Babel:JavaScript编译器

    一.介绍: Babel是一个Javascript编译器,可以将ES6语法转换成ES5. 这意味着,你可以现在就用ES6编写程序,而不用担心现有环境是否支持.下面是一个例子: //转码前: input. ...

  7. iOS学习-创建带下划线的button

    UIButton *tempBtn = [UIButton buttonWithType: UIButtonTypeCustom]; tempBtn.frame = CGRectMake(, , , ...

  8. Android基础总结(三)

    测试 黑盒测试 测试逻辑业务 白盒测试 测试逻辑方法 根据测试粒度 方法测试:function test 单元测试:unit test 集成测试:integration test 系统测试:syste ...

  9. mybatis 一对一与一对多collection和association的使用

    在mybatis如何进行一对一.一对多的多表查询呢?这里用一个简单的例子说明. 一.一对一 1.association association通常用来映射一对一的关系,例如,有个类user,对应的实体 ...

  10. java面向对象---成员变量和成员函数

    //成员变量 1.类定义了对象中所具有的变量,这些变量称作成员变量 2.每个对象都有自己的变量,和同一个类的其他对象的分开的 //函数与成员变量 1.在函数中可以直接写成员变量的名字来访问成员变量,那 ...