每天写点shell--命令行参数
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--命令行参数的更多相关文章
- shell 命令行参数(getopt和getopts)
getopt 命令 使用getopt命令,可以解析任何命令行选项和参数,但是用法比较复杂.getopt的命令用法如下: $ getopt --help 用法: getopt optstring par ...
- shell 命令行参数(基本)
命令行参数 $0 表示程序名.$1 至 \$9则是位置参数.$# 表示参数的个数.$* 将所有参数当做一个整体来引用$@ 把每个参数作为一个字符串返回,可以使用for循环来遍历$? 最近一个执行的命令 ...
- 写个C#命令行参数解析的小工具
最近测试工作做的比较多因此时常要创建一些控制台类型的应用程序.因为程序有不同的参数开关,需要在程序启动的时候通过命令行来给程序传递各种开关和参数.直接操作args有些不方便,所以就写了个解析参数的小工 ...
- python 命令行参数学习(二)
照着例子看看打打,码了就会.写了个命令行参数调用进行运算的脚本. 参考文章链接:http://www.jianshu.com/p/a50aead61319 #-*-coding:utf-8-*- __ ...
- kettle文件自动化部署(shell脚本执行):命令行参数传入
shell脚本中调用kitchen 和 pan去执行,job和transformation文件.分 windows和 dos系统两种. 举个简单的小例子 shell脚本: export JAVA_HO ...
- Shell 命令行,写一个自动整理 ~/Downloads/ 文件夹下文件的脚本
Shell 命令行,写一个自动整理 ~/Downloads/ 文件夹下文件的脚本 在 mac 或者 linux 系统中,我们的浏览器或者其他下载软件下载的文件全部都下载再 ~/Downloads/ 文 ...
- Shell 参数(2) --解析命令行参数工具:getopts/getopt
getopt 与 getopts 都是 Bash 中用来获取与分析命令行参数的工具,常用在 Shell 脚本中被用来分析脚本参数. 两者的比较 (1)getopts 是 Shell 内建命令,geto ...
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2. $# 传递给脚本或函数的参数个数. $* 传 ...
- Linux Shell 05 位置变量(命令行参数)
在Linux shell 脚本中可能会用到一些命令行参数,常见如下: $0:脚本名称 $#:执行脚本时传入的参数个数,不包括脚本名称 $@:所有参数 $*:所有参数 $1...$9:第1个参数.... ...
- 【Shell脚本学习8】Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
前面已经讲到,变量名只能包含数字.字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量. 例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: $echo $$ 运 ...
随机推荐
- 前端之web上传文件的方式
前端之web上传文件的方式 本节内容 web上传文件方式介绍 form上传文件 原生js实现ajax上传文件 jquery实现ajax上传文件 form+iframe构造请求上传文件 1. web上传 ...
- PHP环境的搭建(Apache)
一,下载XAMPP集成软件包. 二,Apache的安装配置: Apache的安装就点击下一步下一步,默认路径在系统的C盘. 三,在star Apache的时候,出现了端口号80冲突(被占用),解决 ...
- ConcurrentHashMap内存泄漏问题
问题背景 上周,同事写了一段ConcurrentHashMap的测试代码,说往map里放了32个元素就内存溢出了,我大致看了一下他的代码及运行的jvm参数,觉得很奇怪,于是就自己捣鼓了一下.首先上一段 ...
- .NET跨平台之旅:成功将示例站点升级至ASP.NET Core RC2
ASP.NET Core RC2 终于发布了( Announcing ASP.NET Core RC2 ).为了庆祝这次发布,我们将运行在 Ubuntu 服务器上的示例站点 about.cnblogs ...
- ICP算法(Iterative Closest Point迭代最近点算法)
标签: 图像匹配ICP算法机器视觉 2015-12-01 21:09 2217人阅读 评论(0) 收藏 举报 分类: Computer Vision(27) 版权声明:本文为博主原创文章,未经博主允许 ...
- Mongodb的安装使用
1.下载 最好不要去.com的那个网站下载: 各个版本的下载地址: http://dl.mongodb.org/dl/win32/x86_64 2.压缩包版本: 下载压缩包版本,目录结构如图: ...
- Python 日常积累
包管理 >from ... import ... 的用法和直接import的区别 直接使用import时,如果需要使用到导入模块内的属性和方法,必须使用模块名.属性和模块名.方法的方式进行调用 ...
- 信鸽推送 10004,os文件配置出错,解决办法
信鸽推送注册失败 返回码 10004 是 os 配置出现问题 经过询问客服,得到以下解决办法 将SDK中的so文件复制下来 新建文件夹jniLibs,并将 so 配置文件粘贴进去 便可完成注册
- iOS中使用正则
一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...
- 【URAL 1519】Formula 1
http://acm.timus.ru/problem.aspx?space=1&num=1519 调了好久啊.参考(抄)的iwtwiioi的题解. 如果想要题解,题解在<基于连通性状态 ...