在shell中,经常需要处理一些特殊的变量,从这些变量里获取必要的信息,常用的变量包括:$#,$*,$@,$0,$?

下面来进行详细说明

$#,调用脚本的命令行参数的个数。

$*和$@,脚本的命令行参数,有多少算多少,两者的区别可以用一个例子说明:如果有一个参数是"two words",那么,对于$*来说,这是两个值,而$@会把这个认为是一个值。

$0,脚本命令行中的第1个值,也就是启动脚本所使用的命令的名称,如果一个脚本可以被用多个名称调用,检查这个变量就变得有意义了,而$1则是命令行的第1个参数,后面的数值依次类推。

$?,前一个命令的返回值,如果前一个命令返回成功,$?的值就是0,否则会是一个非零值。(在没有return的情况下适用,具体见后面的实例)

$$,当前进程的id

  1. #!/bin/bash
  2. E_PARAM_ERR=-198
  3. EQUAL=-199
  4. max2()
  5. {
  6. if [ -z "$2" ]
  7. then
  8. return $E_PARAM_ERR
  9. fi
  10. if [ "$1" -eq "$2" ]
  11. then
  12. return $EQUAL
  13. else
  14. if [ "$1" -gt "$2" ]
  15. then
  16. return $1
  17. else
  18. return $2
  19. fi
  20. fi
  21. }
  22. max2 33 34
  23. #echo $? 这里的$?为34
  24. return_val=$? #这里的$?为0
  25. #echo $? 这里的$?为0
  26. if [ "$return_val" -eq $E_PARAM_ERR ]
  27. then
  28. echo "Need to pass two parameters to the function."
  29. elif [ "$return_val" -eq $EQUAL ]
  30. then
  31. echo "The two numbers are equal."
  32. else
  33. echo "The larger of the two numbers is $return_val."
  34. fi
  35. exit 0
  1. sucre@sucre-ubuntu:~$ echo $$
  2. 1241
  3. sucre@sucre-ubuntu:~$ echo $?
  4. 0
  5. sucre@sucre-ubuntu:~$

我个人觉得$?用的比其它的要多一些,所以在这里多说了一些。

本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/389107,如需转载请自行联系原作者

shell中的特殊变量相关推荐

  1. linux 变量替换字符串,shell中常用的变量处理、字符串操作(之一)

    在shell中,当我们已经获取到某个变量的变量值的时候,可能还需要对变量值进行一定的处理,才能到我们最终想要的结果,今天我们就来聊聊shell中常见的变量处理方法,我们通常会对变量进行如下处理. 一. ...

  2. shell中强制声明变量

    可以在shell中强制必须声明变量,shopt 指令,如下面的指令mustpreset.sh 运行结果为50 #!/bin/sh declare Informix=50 echo $Informix ...

  3. 在 Linux shell 中自由操作时间变量

    在我之前的一篇文章中提到了在C程序中如何自由的将当前或者指定的时间按照格式自由输出.如果我们要在shell中做差不多的事情呢?这篇文章就是说这个的. 本文地址:https://segmentfault ...

  4. linux shell 获取环境变量,bash shell中的环境变量

    环境变量--bash shell使用环境变量来存储系统相关数据,并允许将数据存储在内存中. 环境变量分为:全局环境变量 本地环境变量 目录全局环境变量 本地环境变量 设置全局环境变量 删除环境变量 P ...

  5. shell中的环境变量设置

    1. 环境变量 环境变量也称为全局变量,可以在创建他们的Shell及其派生出来的任意子进程Shell中使用,环境变量又可以分为自定义环境变量和bash内置的环境变量,环境变量可以在命令行中设置和创建, ...

  6. shell中常用系统变量和条件判断

    常用系统变量 $0 当前程序的名称 $n 当前程序的第n个参数,n=1,2,-9 $* 当前程序的所有参数(不包括程序本身) $# 当前程序的参数个数(不包括程序本身) $$ 当前程序的PID $!  ...

  7. shell中的$IFS变量和$*

    IFS表示 Internal Field Separator (内部字段分隔符) $IFS 在Linux下写下如下脚本: test1.sh string1="1 2 3 4" ec ...

  8. SHELL中的变量和参数

    $    变量替换操作符. 只有在变量被声明,赋值,unset 或exported 或者是在变量代表一个signal 的时候, 变量才会是以本来的面目出现在脚本里.变量在被赋值的时候,可能需要使用&q ...

  9. (2)shell编程学习 Shell中的变量(预设变量表)及变量定义与特殊变量 (脚本小子的进阶之路)

    这里尽量以较简略的篇幅讲解,如果之前有Python PHP语言基础的话,学习应该非常快.当然文章篇幅有限,只能讲一些主要的地方,一些偏的知识可能不讲. 目录 变量 局部变量 环境变量 自定义环境变量 ...

最新文章

  1. 在Javascript中实现伪哈希表
  2. sql net message from client
  3. Python+tkinter打造类似于IDLE的代码编辑器(83行源码)
  4. java有哪些部分要学_java需要学习哪些知识
  5. 蓝桥杯2016年第七届C/C++省赛B组第四题-快速排序
  6. asp 保存listbox已有的值_使用Asp.net实现信息管理系统的数据统计功能
  7. java oa系统消息推送_第三方系统向泛微OA系统推送消息
  8. 硬盘数据恢复软件FinalData使用心得
  9. Cydia 不能联网的终极解决方法
  10. 面试题:Elasticsearch和solr的区别
  11. word2vec模型原理及实现词向量训练案例
  12. xp系统从u盘启动计算机,联想xp系统如何设置U盘启动_联想xp通过bios设置U盘启动的步骤...
  13. Android烂笔头
  14. bcd转ascii码 流程图_BCD码转换成ASCII值
  15. python中的抽象类
  16. 再次强调完成的定义(DoD)
  17. 插值与多项式逼近的数值计算方法——《数值计算方法》
  18. 某型飞机惯导系统检测设备研制
  19. 快速入门rsync远程同步
  20. win10计算机未连接到网络适配器,win10未检测到正确的适配器怎么办_win10检测不到正确的适配器解决方法...

热门文章

  1. 机器学习中的数学基础(1)——向量和范数
  2. Google 全球员工围攻 Google!
  3. 神经网络中激活函数的真正意义?
  4. (最新最全)windows使用anaconda安装pytorch进行深度学习并使用GPU加速
  5. 《Nature》挑战进化DNA突变理论!
  6. 新基建的内涵、意义和隐忧 ,基于互联网大脑模型的分析
  7. 数字孪生智慧城市建设加速5G+产业AI的应用,全流程数据透明化及实时可控成为升级的大方向,构建智慧城市生态圈在路上!...
  8. 活着不易,5G时代终端厂商的路在何方?
  9. AI产业链分布图曝光:1040个玩家,BAT率先步入应用
  10. 国际基因编辑科技发展报告