`
dengwenwei121
  • 浏览: 40954 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
文章分类
社区版块
存档分类
最新评论

Shell 特殊变量

 
阅读更多

以前的教程中说过有关在变量名中使用某些非字母数字字符。这是因为这些字符中使用特殊的Unix变量的名称。这些变量被保留用于特定功能。

例如,$字符表示进程ID号,或PID,在当前shell:

$echo $$

上面的命令将写入在当前shell的PID:

29949

以下下表显示了一些特殊的变量,你可以在你的shell脚本中使用:

变量 描述
$0 The filename of the current script.
$n These variables correspond to the arguments with which a script was invoked. Here n is a positive decimal number corresponding to the position of an argument (the first argument is $1, the second argument is $2, and so on).
$# The number of arguments supplied to a script.
$* All the arguments are double quoted. If a script receives two arguments, $* is equivalent to $1 $2.
$@ All the arguments are individually double quoted. If a script receives two arguments, $@ is equivalent to $1 $2.
$? The exit status of the last command executed.
$$ The process number of the current shell. For shell scripts, this is the process ID under which they are executing.
$! The process number of the last background command.

命令行参数:

该命令行参数$1, $2, $3,...$9是位置参数,与0美元指向实际的命令,程序,shell脚本,函数和$1, $2, $3,...$9作为参数的命令。

下面的脚本使用命令行相关的各种特殊变量:

#!/bin/sh

echo "File Name: $0"
echo "First Parameter : $1"
echo "First Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"

下面是一个示例运行上面的脚本:

$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2

特殊参数$ *和$ @:

有特殊的参数,允许在一次访问所有的命令行参数。 $ *和$ @都将相同的行动,除非它们被括在双引号“”。

这两个参数指定的命令行参数,但“$ *”特殊参数需要整个列表作为一个参数之间用空格和“$ @”特殊参数需要整个列表,将其分为不同的参数。

我们可以写下面所示的命令行参数处理数目不详的$ *$ @特殊参数的shell脚本:

#!/bin/sh

for TOKEN in $*
do
   echo $TOKEN
done

有一个例子运行上面的脚本:

$./test.sh Zara Ali 10 Years Old
Zara
Ali
10
Years
Old

注:在这里do...done是一种循环,在以后的教程中,我们将涵盖。

退出状态:

$?变量表示前一个命令的退出状态。

退出状态是一个数值,完成后返回的每一个命令。作为一项规则,大多数命令返回,如果他们不成功退出状态为0,如果他们是成功的。

一些命令返回其他特殊退出状态。例如,一些命令区分类型的错误,并且将返回各种退出值取决于特定类型失效。

成功的命令如下面的例子:

$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
$echo $?
0
$

分享到:
评论

相关推荐

    shell特殊变量

    Shell特殊变量在Linux和Unix系统中的使用是shell脚本编程中的关键组成部分,它们提供了一种方式来访问和处理脚本运行时的环境信息。这些变量不是由用户直接赋值的,而是由shell自动创建和维护的,具有特殊的含义和...

    shell特殊变量图表

    shell特殊变量图表,看看你知不知道?

    shell的特殊变量实例详解

    ### Shell的特殊变量实例详解 在Shell编程中,有许多预定义的特殊变量,它们具有特定的功能和用途。本文将详细解析这些特殊变量的作用及其应用场景。 #### $0:Shell或Shell脚本的名字 - **作用**:`$0` 用于表示...

    linux超级基础系列——shell变量(本地变量和环境变量

    除此之外,还存在另外两种特殊变量,它们是只读的,并且主要用作向shell脚本传递参数。 本地变量仅在创建它们的shell生命期内有效,也就是说,它们只在当前运行的shell进程或者脚本中有效。一旦用户退出或者启动新...

    Shell变量名使用的特殊字符

    Shell变量名使用的特殊字符: $# 传送给命令Shell的参数序号 $- 在Shell启动或使用set命令时提供选项 $? 上一条命令执行后返回的值 $$ 当前shell的进程号 $! 上一个子进程的进程号 $@ 所有的参数,每个都用双...

    Shell教程v1.0中文PDF完整版最新版本

    - **第7章 Shell特殊变量** - 讨论Shell中的$0, $#, $*, $@, $?, $$等特殊变量及其与命令行参数的关系。 - **第8章 Shell替换** - **第9章 Shell运算符** - 包括算数运算符、关系运算符、布尔运算

    shell变量,具体的

    ### Shell 变量详解 #### 一、Shell变量概述 Shell变量是Shell脚本编程的基础之一,用于存储数据。在Shell脚本环境中,变量没有类型之分,它们只能存储文本字符,系统不会自动识别为其他类型(如数字、布尔值等)...

    shell脚本语言.pdf

    Shell 特殊变量: * $0:当前 Shell 脚本的名称 * $1、$2、$3 等:命令行参数 * $?:最后一个命令的退出状态 * $*:所有的命令行参数 * $@:所有的命令行参数,包括空格 Shell 替换: * Shell 替换是指将某个...

    shell编程-shell编程

    - **使用特殊Shell变量**: 熟悉常用的Shell特殊变量,如`$*` 和 `$#`,这些变量在处理命令行参数时特别有用。 - **使用`shift`和`read`命令**: 学习如何移动位置参数和读取用户输入。 #### 二、Shell程序的基本概念...

    Linux之Shell的变量设置.doc

    Linux Shell 变量设置知识点详解 Linux Shell 变量设置是一种非常重要的技术,在 Linux 中,每个用户登录系统之后都会有一个属于自己的 bash shell,每个人都能够使用 bash 执行命令来收取自己的邮箱,但是 bash 是...

    Bash特殊变量讲解

    通过本文对Bash特殊变量的介绍,我们可以看到这些变量在Shell脚本开发中扮演着至关重要的角色。正确理解和使用这些特殊变量可以帮助我们编写出更高效、更可靠的脚本。希望本文能为你提供足够的背景知识和实践指导,...

    linuxshell脚本语言基础知识.docx

    3. Shell特殊变量: - `$0`:脚本文件名。 - `$1`、`$2`等:脚本接收的参数,`$1`代表第一个参数。 - `$#`:传递给脚本的参数总数。 - `$*`:所有参数作为一个字符串。 - `$$`:脚本当前进程ID。 - `$?`:上一个命令...

    学习笔记-基础Shell编程

    #### 五、Shell特殊变量示例 ```sh #!/bin/bash echo "FileName:$0" echo "FirstParameter:$1" echo "SecondParameter:$2" echo "QuotedValues:$@" echo "QuotedValues:$*" echo "TotalNumberofParameters:$#" ``` ...

    shell abs英文版

    2. **Shell特殊变量**:学习预定义的环境变量,如$0(脚本名)、$#(参数数量)和$*(所有参数列表),以及如何利用它们来增强脚本的功能。 3. **Shell运算符**:掌握比较运算符、逻辑运算符和赋值运算符,用于条件...

    Shell开发教程.docx

    Shell特殊变量:Shell$0,$#,$*,$@,$?,$$和命令行参数 **特殊变量介绍**: - `$0`:脚本文件名称。 - `$#`:传入脚本的参数个数。 - `$*` 和 `$@`:所有参数列表。 - `$$`:当前进程ID。 - `$?`:前一个命令的退出...

    Shell编程之特殊变量的笔记小结

    Shell编程中的特殊变量是...总之,Shell特殊变量在编写脚本时起着关键作用,它们帮助我们处理输入参数,追踪脚本状态,使得脚本更灵活且易于维护。理解并熟练运用这些特殊变量,能够显著提升Shell脚本的效率和实用性。

    shell编程.doc(变量 用户定义变量,环境变量,位置变量(shell 参数) )

    Shell中的保留字符有特殊含义,例如`$`用于引用变量,`|`用于管道连接命令,`#`开始注释,`&`使命令在后台执行,`*`和`?`作为通配符,`>`和`>>`进行输出重定向,``用于命令替换等。 总的来说,Shell编程是一种强大...

    shell脚本课程

    此外,还会讨论变量的使用,如环境变量、局部变量和shell特殊变量,以及变量赋值、引用和操作。 第二部分:命令和语法 这部分深入讲解了UNIX/Linux命令行的基本操作,如文件和目录管理(如ls、cd、mv、cp、rm等)、...

    shell基础之环境变量 位置参数变量 预定义变量

    Shell提供了一些预定义的变量,它们具有特殊用途,如`$?`用于检查上一个命令的退出状态。如果上一个命令成功执行,`$?`将返回0,否则返回非0值。例如,你可以使用`if`语句结合`$?`来判断命令是否成功: ```bash ...

Global site tag (gtag.js) - Google Analytics