`
notfatboy
  • 浏览: 235100 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转)Bash shell中的位置参数$#,$*,$@,$0,$1,$2…及特殊参数$?,$-等的含义

阅读更多

在Bash shell中经常会见到一些比较特殊的符号,本人现收集与此,以供查阅:

位置参数: 
详见ABS(Advanced Bash Shell)中文翻译版103页第9章第一节内部变量,当然英文版ABS都一样啦

$0, $1, $2,等等… 
位置参数,从命令行传递给脚本,或者是传递给函数.或者赋职给一个变量. 
(具体见Example 4-5 和Example 11-15) 
$0表示当前执行的进程名,script 本身的名字,或者在正则表达式中表示整行输出

$# 
命令行或者是位置参数的个数.(见Example 33-2) 
$* 
所有的位置参数,被作为一个单词. 
注意:"$*"必须被""引用. 
$@ 
与$*同义,但是每个参数都是一个独立的""引用字串,这就意味着参数被完整地传递, 
并没有被解释和扩展.这也意味着,每个参数列表中的每个参数都被当成一个独立的单词. 
注意:"$@"必须被""引用.

其他的特殊参数 
$- 
传递给脚本的falg(使用set 命令).参考Example 11-15. 
注意:这起初是ksh 的特征,后来被引进到Bash 中,但不幸的是,在Bash 中它看上去也不 
能可靠的工作.使用它的一个可能的方法就是让这个脚本进行自我测试(查看是否是交 
互的). 
$! 
在后台运行的最后的工作的PID(进程ID). 
$_ 
保存之前执行的命令的最后一个参数. 
$? 
命令,函数或者脚本本身的退出状态(见Example 23-7) 
用于检查上一个命令,函数或者脚本执行是否正确。(在Linux中,命令退出状态为0表示该命令正确执行,任何非0值表示命令出错。) 
$$ 
脚本自身的进程ID.这个变量经常用来构造一个"unique"的临时文件名. 
(参考Example A-13,Example 29-6,Example 12-28 和Example 11-25). 
这通常比调用mktemp 来得简单. 
注意事项: 
[1] 当前运行的脚本的PID 为$$. 
[2] "argument"和"parameter"这两个单词经常不加区分的使用.在这整本书中,这两个 
单词的意思完全相同.(在翻译的时候就未加区分,统统翻译成参数)

退出和返回 
退出状态(exit status) 
函数返回一个被称为退出状态的值. 退出状态可以由return 来指定statement, 否则函数的 
退出状态是函数最后一个执行命令的退出状态(0 表示成功,非0 表示出错代码). 退出状态 
(exit status)可以在脚本中由$? 引用. 这个机制使脚本函数也可以像C 函数一样有一个" 
返回值". 
return 
终止一个函数.return 命令[1]可选地带一个整数参数,这个整数作为函数的"返回值"返回 
给调用此函数的脚本,并且这个值也被赋给变量$?.

while true可以写为while :

Example 23-7 两个数中的最大者 
###################Start Script################# 
1 #!/bin/bash 
2 # max.sh: 两个整数中的最大者. 

4 E_PARAM_ERR=-198 # 如果传给函数的参数少于2 个时的返回值. 
5 EQUAL=-199 # 如果两个整数值相等的返回值. 
6 # 任一个传给函数的参数值溢出 
7 # 

9 max2 () # 返回两个整数的较大值. 
10 { # 注意: 参与比较的数必须小于257. 
11 if [ -z "$2" ] 
12 then 
13 return $E_PARAM_ERR 
14 fi 
15 
16 if [ "$1" -eq "$2" ] 
17 then 
18 return $EQUAL 
19 else 
20 if [ "$1" -gt "$2" ] 
21 then 
22 return $1 
23 else 
24 return $2 
25 fi 
26 fi 
27 } 
28 
29 max2 33 34 
30 return_val=$? 
31 
32 if [ "$return_val" -eq $E_PARAM_ERR ] 
33 then 
34 echo "Need to pass two parameters to the function." 
35 elif [ "$return_val" -eq $EQUAL ] 
36 then 
37 echo "The two numbers are equal." 
38 else 
39 echo "The larger of the two numbers is $return_val." 
40 fi 
41 
42 
43 exit 0 
44 
45 # 练习 (容易): 
46 # ————— 
47 # 把这个脚本转化成交互式的脚本, 
48 #+ 也就是说,让脚本可以要求调用者输入两个整数. 

 

文章出处:DIY部落(http://www.diybl.com/course/3_program/shell/shelljs/20090522/167696.html)

分享到:
评论

相关推荐

    安卓系统下的bash shell,ssh服务器,gcc编译器以及vim文本编辑器等

    number1:number2在历史缓冲区中第number1个命令的第number2个参数 快捷键 C-->Ctrl M-->Alt E-->Esc DEL-->Backspace C-l:clear 清屏 C-a:将光标跳至命令行行首 C-e:将光标跳至命令行行尾 C-k:...

    shell编程学习笔记

    $*:以一个单字符串显示所有项脚本传递的参数。与位置变量不通,此选项参数可超过9个;$$:脚本运行的当前进程ID号;&!:后台运行的最后一个进程的进程ID号;$@:与$#相同,但是使用时加引号,并在引号中返回每个...

    Shell编程中的特殊变量之位置变量介绍

    2、$n 获取当前执行脚本的第n个参数,n=1..9,$0,为当前脚本名。如果n大于9,使用${10} 代码如下: echo’echo ‘$(seq-s ” $”1 5|sed’s/1/$1/’) > test_n.sh cattest_n.sh #内容如下 #echo $1 $2 $3 $4 $5 ...

    linux shell数组深入学习理解

    bash shell只支持一维数组,但参数个数没有限制。声明一个数组:declare -a ...=var2 … array[n]=varN计算数组元素个数:${#array[@]} 或者 ${#array[*]}BASH的特殊参数 @ 和 * 都表示“扩展位置参数,从1开始”

    Linux高级bash编程

    高级bash编程 高级Bash脚本编程指南(一) 目录 ++++ 第一部分. 热身 1. 为什么使用shell编程 2. 带着一个Sha-Bang出发(Sha-Bang指的是#!) 2.1. 调用一个脚本 2.2. 初步的练习 第二部分. 基本 3. 特殊...

    Shell编程之特殊变量和扩展变量详解

    Shell中的位置参数变量主要是指0、0、1、$#等,主要用于从命令行、函数或脚本执行等地方传递参数。详细说明如下所示: $0:获取当前执行的Shell脚本的文件名,如脚本中包含路径,则输出也包括路径 $n:获取当前执行...

    Advanced Bash-Scripting Guide <>

    arglist:通过$*和$@列出所有的参数 9-7. 不一致的$*和$@行为 9-8. 当$IFS 为空时的$*和$@ 9-9. 下划线变量 9-10. 在一个文本文件的段间插入空行 9-11. 利用修改文件名,来转换图片格式 9-12. 模仿getopt 命令 9-13. ...

    Linux Shell编程实验

    2.位置参数和环境变量。 3.Shell中的特殊字符。 4.条件判断结构与循环结构 5.函数的定义和使用 三、预备知识 1、LINUX环境下常用命令和VI编辑器的操作。 2、了解Shell作用和主要分类等基础知识。 四、实验设备及...

    Linux: Shell编程基础

    NULL 博文链接:https://justcoding.iteye.com/blog/1941715

    linux-Shell基础视频教程

    10.4.3 Shell基础-Bash变量-位置参数变量.mp4 10.4.4 Shell基础-Bash变量-预定义变量.mp4 10.5.1 Shell基础-Bash变量-数值运算与运算符.mp4 10.5.2 Shell基础-Bash变量-变量测试与内容替换.mp4 10.6.1 Shell基础...

    Linux实验四shell编程

    Linux实验四shell编程,shell脚本的建立和执行,历史命令和别名定义,shell变量和位置参数、环境变量,bash的特殊字符,一般控制结构,算数运算及bash函数。

    实验八 shell编程1

    2.位置参数和环境变量 3.Shell中的特殊字符 1. if 语句 if语句通过判断逻辑表达式来作出选择,在bash中的条件语句有如下的格式: if [ ex

    Shell脚本专家指南

    内容简介 《Shell脚本专家指南》旨在为Linux、Unix以及OSx系统管理员提供短小精悍...附录B 特殊参数 附录C shell脚本编程的其他资源 C.1 手册 C.2 图书 C.2.1 脚本编程图书 C.2.2 补充图书 C.3 shell资源 C.4.网络资源

    shell脚本编写

    预定义变量,bash预定义的特殊变量,不能直接修改;位置变量,通过命令行给程序传递执行参数 定义一个新的shell变量,必须以英文字母或下划线开头; 定义变量的格式:变量名=变量值,如aaa=123;

    Linux_基础教程--Shell脚本编程.ppt

    本文档为原创,主要讲解了基于linux平台的bash编程基本命令使用,帮助学习者熟悉Shell 脚本的编码规范,掌握执行和调试方法,掌握对变量进行整数运算和间接引用的方法,理解位置参数变量和特殊参数变量的用途,掌握...

    Bash新手指南

    第一章 Bash 和 Bash 脚本 .................................................................................................2 1.1.普通 shell 程序............................................................

    入门学习Linux常用必会60个命令实例详解doc/txt

    从图1中可以看到,笔者系统中可以使用的Shell有bash(缺省)、csh、sh、tcsh四种。 exit 1.作用 exit命令的作用是退出系统,它的使用权限是所有用户。 2.格式 exit 3.参数 exit命令没有参数,运行后退出系统...

    宋劲彬的嵌入式C语言一站式编程

    5.6. 位置参数和特殊变量 5.7. 函数 6. Shell脚本的调试方法 32. 正则表达式 1. 引言 2. 基本语法 3. sed 4. awk 5. 练习:在C语言中使用正则表达式 33. 信号 1. 信号的基本概念 2. 产生信号 2.1. 通过终端按键产生...

    Linux C 一站式学习

    5.6. 位置参数和特殊变量 5.7. 函数 6. Shell脚本的调试方法 32. 正则表达式 1. 引言 2. 基本语法 3. sed 4. awk 5. 练习:在C语言中使用正则表达式 33. 信号 1. 信号的基本概念 2. 产生信号 2.1. 通过终端按键产生...

    2009 达内Unix学习笔记

    mkdir dir1/dir2 在dir1下建dir2 mkdir dir13 dir4 dir5 连建多个 mkdir ~/games 用户主目录下建(默认在当前目录下创建) mkdir -p dir6/dir7/dir8 强制创建dir8;若没有前面的目录,会自动创建dir6和dir7。 ...

Global site tag (gtag.js) - Google Analytics