Bash中的位置参数和特殊参数
#Bash中的位置参数和特殊参数
#Bash中的位置参数是由0以外的一个或多个数字表示的参数。
#位置参数是当Shell或Shell函数被引用时由Shell或Shell函数的参数赋值,并且可以使用Bash的内部命令set来重新赋值。位置参数N可以被引用为${N},或当N只含有一个数字时被引用为$N
# $ set 1 2 3 four five six 7 8 9 ten
# $ echo "$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}"
# 1 2 3 four five six 7 8 9 ten
#位置参数不能通过赋值语句来赋值,而只能通过Bash的内部命令set和shift来设置和取消它们。当Shell函数运行时,位置参数会被临时地替换。
#===========================================================================================
#
#
# FILE:param.sh
# USAGE:./param.sh
# DESCRIPTION:
#
# OPTIONS:---
# REQUIREMENTS:---
# BUGS:---
# NOTES:---
# AUTHOR:Yuan Shaoqian,yuanshaoqiancom@gmail.com
# ORGANIZATION:
# CREATED:// :
# REVISION:---
#===========================================================================================
echo "Argument 1 : $1"
echo "Argument 2 : $2"
echo "Argument 3 : $3"
echo "Argument 4 : $4"
echo "Argument 5 : $5"
<<COMMENT
root@yuan:/root # ./param.sh one two three four five
Argument : one
Argument : two
Argument : three
Argument : four
Argument : five
29 COMMENT
特殊参数:
Bash对一些参数的处理比较特殊,这些参数只能被引用,但不能修改它们的值,这些参数分别是*、@、#、?、-、$、!、0、_
1、特殊参数*,将扩展为从1开始的所有位置参数。如果扩展发生在双引号内,即“$*”,则扩展为包含每个参数值的单词,每个参数值用特殊变量IFS的第一个字符分隔:“$*”等价于“$1c$2c$3c...”,其中c就是IFS中第一个字符,如果变量IFS没有定义任何字符,则参数之间默认用空格分隔。如果IFS为空,则参数直接相连,中间没有分隔。
例1:
$ set one two three
$ echo "$*"
one two three
例2:
$ IFS=":;\"
$ set one two three
$ echo "$*"
one:two:three
2、特殊参数@
特殊参数@,也将扩展为1开始的所有位置参数。但当它的扩展发生在双引号内时,每个参数都扩展为分隔的单词:“$@”,等价于“$1”、“$2”、“$3”.....参数@和*之间的区别在于将于for循环的调用中显现出来。
3、特殊参数#
特殊参数#,将扩展为位置参数的个数,用十进制表示:
$ set one two three
$ echo $#
4、特殊参数?
特殊参数?,将扩展为最近一个前台执行的命令的退出状态。可以使用它来检测shell脚本执行是否成功,通常退出状态为0表示命令已经没有任何错误地结束运行。
例:
$ touch newfile
$ echo $? $ls newfile
$ echo $? $ rm -f newfiile
$ echo $? $ ls newfile
$ echo $?
未完成
Bash中的位置参数和特殊参数的更多相关文章
- python函数中的位置参数、默认参数、关键字参数、可变参数区别
一.位置参数 调用函数时根据函数定义的参数位置来传递参数. #!/usr/bin/env python # coding=utf-8 def print_hello(name, sex): sex_d ...
- Bash shell中的位置参数$#,$*,$@,$0,$1,$2...及特殊参数$?,$-等的含义
http://hi.baidu.com/lolorosa/blog/item/5775a608bd670d33b0351da7.html $# 是传给脚本的参数个数 $@ 是传给脚本的所有参数的列表 ...
- 脚本编程中的test、bash调试、变量计算、参数
脚本编程中的test.bash调试.变量计算.参数 1.文件测试 -e FILE:测试文件是否存在 -f FILE:测试文件是否为普通文件 -d FILE:测试路径是否为目录 -r FILE:测试当前 ...
- django中路由系统和视图的对应关系(值的传递)-->主要内容(位置参数、关键字参数、额外参数、include分组[urls的分发]、命名分组、反向解析、APPEND_SLASH)
路由系统也就是 urls.py文件,视图就是 views.py文件 路由系统里面要注意的事项 urlpatterns中的元素按照书写顺序从上往下逐一匹配正则表达式,一旦匹配成功则不再继续. 若要从UR ...
- 脚本乐园 Shell中命令行选项和参数的处理
在Linux的Shell中怎样处理tail -n 10 access.log这样的命令行选项呢?这是被别人问起的一个问题,好好学习了一下,进行总结如下:在bash中,可以用以下三种方式来处理命令行参数 ...
- bash 中的特殊变量
bash 中的特殊变量 变量 说明 ------------------------------------ $0 当前脚本的文件名 $n 第n个位置参数 $* 传递给脚本或函数的所有参数,$*会将这 ...
- Bash 中的 $0 在什么时候不是 argv[0]
每个 C 程序都有一个 main 函数,每个 main 函数都有一个 argv 参数,这个参数是一个字符串数组,这个数组的值是由该 C 程序的父进程在通过 exec* 函数启动它时指定的. 很多人说 ...
- Bash中的任务(job)管理
本来不准备写这篇博客的,因为任务管理(job管理)非常非常常用,以至于觉得根本没有必要去写这样一个东西.但想了下,还是记录一下吧,也许有人会用到呢. 不知你是否碰到过这样的情况,当你兴致勃勃的打开VI ...
- bash 中的变量
bash 中的变量 Linux command line 笔记 变量无需声明,自动创建 var=abc #变量a赋值为字符串abc var="hello world" #字符串里有 ...
随机推荐
- GotGitHub
github在线教程 http://www.worldhello.net/gotgithub/
- 设置ul阴影效果和边框圆角
ul.box {position: relative;z-index: 1; /* prevent shadows falling behind containers with backgrounds ...
- OC:通讯录实战
实战(使用OC的知识制作一个简易通讯录) //语法糖.笑笑语法 // NSString * string = [NSString stringWithFormat:@"string" ...
- jquery 禁止页面滚动-移动端
禁止 window.ontouchmove=function(e){ e.preventDefault && e.preventDefault(); e.r ...
- 你可能不知道的Linux/GNU bash sort多列排序功能
(转载请注明原创于潘多拉盒子) Linux man pages的缺点就是,如果你不会用某个命令,那么看完了多半还是不会.原因是,没有例子!比较囧吧? sort是提供了多列排序的功能的.通过-k选项,可 ...
- Java常见排序算法之快速排序
在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...
- C++ Code_TabControl
主题 1. 选项卡控件基础 2. 显示图标的选项卡 3. 选项卡控件高级 4. 5. 属性 选项卡控件基础 1.插入1个对话框,新建1个类 CCDialog1,1 个对话框对应一个 ...
- 你可能不知道的SQL问题
1. 如下是sql语句和结果, SELECT count(*) AS total FROM orders; +-------+ | total | +-------+ | 150 | +------ ...
- handler looper 和 线程
Handler的概念: 顾名思义,handler在英语中是“操作着,处理者的意思”,而官方的文档给出的概念是,handler允许你发送或者处理Message对象或者Runable对象,这两个对象都是 ...
- 利用shell脚本统计文件中出现次数最多的IP
比如有如下文件test.txt 1 134.102.173.43 2 134.102.173.43 3 134.102.171.42 4 134.102.170.9 要统计出现次数最多的IP可 ...