`
feelar
  • 浏览: 5466 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

linux中shell变量$#,$@,$0,$1,$2的含义

 
阅读更多

变量说明: 
$$ 
Shell本身的PID(ProcessID) 
$! 
Shell最后运行的后台Process的PID 
$? 
最后运行的命令的结束代码(返回值) 
$- 
使用Set命令设定的Flag一览 
$* 
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 
$@ 
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 
$# 
添加到Shell的参数个数 
$0 
Shell本身的文件名 
$1~$n 
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。 
我们先写一个简单的脚本,执行以后再解释各个变量的意义 
# touch variable 
# vi variable 
脚本内容如下: 
#!/bin/sh 
echo "number:$#" 
echo "scname:$0" 
echo "first :$1" 
echo "second:$2" 
echo "argume:$@" 
保存退出 
赋予脚本执行权限 
# chmod +x variable 
执行脚本 
# ./variable aa bb 
number:2 
scname:./variable 
first: aa

second:bb 
argume:aa bb 
通过显示结果可以看到: 
$# 是传给脚本的参数个数 
$0 是脚本本身的名字 
$1是传递给该shell脚本的第一个参数 
$2是传递给该shell脚本的第二个参数 
$@ 是传给脚本的所有参数的列表

 

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

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

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

$1, $2, $3等等...
位置参数,从命令行传递给脚本,或者是传递给函数.或者赋职给一个变量.
此数目可以任意多,但只有前9个可以被访问,使用shift命令可以改变这个限制。
(具体见Example 4-5 和Example 11-15)
$0
$0表示当前执行的进程名,script 本身的名字,或者在正则表达式中表示整行输出

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

其他的特殊参数
$-
传递给脚本的falg(使用set 命令).参考Example 11-15.
显示shell使用的当前选项,与set命令功能相同
注意:这起初是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#################
#!/bin/bash
# max.sh: 两个整数中的最大者.

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

max2 () # 返回两个整数的较大值.
 { # 注意: 参与比较的数必须小于257.
 if [ -z "$2" ]
 then
 return $E_PARAM_ERR
 fi

 if [ "$1" -eq "$2" ]
 then
 return $EQUAL
 else
 if [ "$1" -gt "$2" ]
 then
 return $1
 else
 return $2
 fi
 fi
 }

 max2 33 34
 return_val=$?

 if [ "$return_val" -eq $E_PARAM_ERR ]
 then
 echo "Need to pass two parameters to the function."
 elif [ "$return_val" -eq $EQUAL ]
 then
 echo "The two numbers are equal."
 else
 echo "The larger of the two numbers is $return_val."
 fi

 exit 0

 

分享到:
评论

相关推荐

    浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释

    本文详细介绍了Linux Shell脚本中的几个关键特殊变量 `$#`, `$@`, `$0`, `$1`, `$2` 的含义及其应用场景,并通过具体的示例代码加深理解。熟练掌握这些变量能够帮助开发者更高效地编写Shell脚本,并确保脚本的健壮性...

    linux命令中$0, $#, $?, $$, $@, $数字, $*, !$, $!符号的用法

    1. **$0**:这个变量表示当前执行的shell脚本或命令的名称。在脚本中,它通常代表脚本本身的名字,而在命令行中,它是终端会话的shell程序的名称。 2. **$#**:这个变量提供了传递给shell命令的参数个数。例如,...

    Shell $0, $#, $*, $@, $?, $$和命令行参数的使用

    1. **$0**: 这个变量保存了当前执行的Shell脚本的文件名。例如,如果你的脚本名为`test.sh`,在脚本内部`$0`就会打印出`test.sh`。 2. **$#**: `$#`表示传递给脚本或函数的参数数量。在上述示例中,如果运行`./test...

    shell脚本中的部分环境变量$0,$?,$!,$$,$*,$#,$@

    这里我们将详细探讨在标题和描述中提到的几个特定的环境变量:`$0`, `$?`, `$!`, `$$`, `$*`, `$#`, 和 `$@`。 1. **`$0`**: `$0` 是一个特殊的环境变量,它表示当前执行的Shell脚本的文件名。在脚本内部,`$0` ...

    解决ssh远程登陆linux显示-bash-4.1$的问题

    cp -pr /etc/skel/.bash* /home/test/ ... 您可能感兴趣的文章:浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释php $_SERVER windows系统与linux系统下的区别说明linux让$变成#符号的实操方法linux中$符号的基础用法教程

    shell中的函数、硬链接、软链接、权限、特定变量$1,$#等

    此外,还有其他特殊变量,比如`$0`表示脚本名,`$*`和`$@`都代表所有参数,但`$@`在双引号中会保留每个参数的独立性。 理解这些基本概念对于有效和高效地使用Shell至关重要。熟练掌握后,你可以编写更复杂的脚本,...

    linux中shell变量.pdf

    Linux Shell 变量是 Linux 命令行中非常重要的一部分,它们可以帮助用户更方便地执行任务和管理系统。下面我们将详细解释 Linux Shell 变量的概念和使用方法。 一、shell 变量的概念 Shell 变量是 Linux Shell 中...

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

    在Linux中,shell变量主要分为两大类:本地变量和环境变量。除此之外,还存在另外两种特殊变量,它们是只读的,并且主要用作向shell脚本传递参数。 本地变量仅在创建它们的shell生命期内有效,也就是说,它们只在...

    Linux shell语法学习文档 PDF文档

    04.shell中参数:$0、$?、$!、$$、$*、$#、S@ 5.变量问题 5.1 shell变量概述 6.运算符 7.操作字符串 8.数组 9.分支与循环控制 10.函数 11.字符串的显示颜色 12.1/0重定向 13.正则表达式 14.Linux/shell中一些命令说明...

    linux实验六 shell变量

    ### Linux实验六 Shell变量知识点详解 #### 一、实验目的 1. **熟悉Shell变量**: - Shell变量是Shell编程中的基本概念之一,用于存储数据。这些数据可以是文件名、数字或文本字符串。 - 变量分为两种类型:用户...

    Linux环境变量设置总结

    $0 环境变量决定了shell脚本的名字。 4.13 $# 环境变量 $# 环境变量决定了传递给脚本的参数个数。 4.14 $$ 环境变量 $$ 环境变量决定了shell脚本的进程号。 5. 环境变量的应用 环境变量广泛应用于各种应用程序...

    Linux-shell编程02

    echo '---特殊变量 $0 $1 $2 ..的实践' echo '结果:' $0 $1 $2 echo '#####################' echo '---特殊变量 $# 获取参数总个数' echo '结果:' $# echo '#####################' echo '---特殊变量 $* 实践' ...

    shell特殊变量

    1. `$0`: 这个变量存储的是当前正在执行的shell脚本的文件名。它对于调试和识别脚本来源非常有用,特别是在编写复杂的shell程序时。 2. `$n` (n为数字): 这些变量用于访问传递给脚本或函数的参数。例如,`$1`表示第...

    深入_Shell_变量操作

    深入探讨Shell变量操作:变量替换扩展与字符串处理 在Linux Shell编程中,变量操作是构建高效、灵活脚本的关键技能之一。本文将深入探讨Shell变量的高级操作技巧,特别是变量替换扩展和字符串处理,旨在帮助读者...

    linux 特殊符号含义

    Linux 特殊符号含义详解 在 Linux 中,有许多特殊符号和变量,它们具有特定...了解 Linux 中的特殊符号和变量的含义可以帮助我们更好地使用 Linux 系统和编写 Shell 脚本。这将使我们更好地掌握 Linux 的使用和开发。

    Linux之Shell的变量设置.doc

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

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

    Linux 超级基础系列 —— shell 变量(本地变量和环境变量) shell 变量是 Linux 系统中的一种重要概念,它允许用户存储和重复使用有用的信息,提高工作效率。shell 变量可以分为本地变量和环境变量两种。 什么是...

    linux 系统变量 PS1的简介.docx

    在Linux系统中,`PS1`是一个重要的环境变量,用于定义Bash shell中的主提示符。它允许用户自定义命令行界面的外观,这对于提高工作效率及个性化设置非常有用。PS1(数字1而非字母l)的具体配置取决于所使用的Bash...

Global site tag (gtag.js) - Google Analytics