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" #字符串里有 ...
随机推荐
- poj3468A Simple Problem with Integers(线段树,在段更新时要注意)
Description You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. On ...
- WPF的DataGrid绑定ItemsSource后第一次加载数据有个别列移位的解决办法
最近用WPF的DataGrid的时候,发现一个很弱智的问题,DataGrid的ItemsSource是绑定了一个属性: 然后取数给这个集合赋值的时候,第一次赋值,就会出现列移位 起初还以为是显卡的问题 ...
- c++常见输入方法[持续更新]
字符串输入 cin>> 使用空格确认字符串结束位置,保留换行符在输入队列当中 单个字符读取 cin.get(), cin.get(char) 每次读取一行: cin.getline(cha ...
- Win8增加了快速启动功能......
(从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期 2014-05-11) Win8增加了快速启动功能,能让计算机尽快的启动进入Windows界面.win8的这种快速启动功能只会在“关机 ...
- OpenGL光照测试
OpenGL光照测试 花了大概半个月,研究了OpenGL的光照.请注意是固定管线渲染的光照,如果使用着色器的高手们请飘过.这个程序是通过光照对模型的照射,来研究OpenGL光照的性质.以后可以通过这个 ...
- spring-flex
mvn install:install-file -Dpackaging=jar -DgroupId=com.adobe.blazeds -Dversion=4.0.0.14931 -Dartifac ...
- C# String.Format
C 货币 string.Format("{0:C3}", 2) $2.000 D 十进制 string.Format("{0:D3}", 2) 002 E 科学 ...
- hdu 4740 The Donkey of Gui Zhou bfs
The Donkey of Gui Zhou Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproble ...
- Spring MVC整合Velocity
Velocity模板(VM)语言介绍 Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由j ...
- OverHust
https://github.com/fanhongwei/OverHust https://github.com/eltld/OverHust