特殊的shell变量

man bash:

Special Parameters
       The shell treats several parameters specially.   These  parameters  may
       only be referenced; assignment to them is not allowed.
       *      Expands  to  the positional parameters, starting from one.  When
              the expansion occurs within double quotes, it expands to a  sin‐
              gle word with the value of each parameter separated by the first
              character of the IFS special variable.  That is, "$*" is equiva‐
              lent to "$1c$2c...", where c is the first character of the value
              of the IFS variable.  If IFS is unset, the parameters are  sepa‐
              rated  by  spaces.   If  IFS  is null, the parameters are joined
              without intervening separators.
       @      Expands to the positional parameters, starting from  one.   When
              the  expansion  occurs  within  double  quotes,  each  parameter
              expands to a separate word.  That is, "[email protected]" is equivalent to "$1"
              "$2"  ...   If the double-quoted expansion occurs within a word,
              the expansion of the first parameter is joined with  the  begin‐
              ning  part  of  the original word, and the expansion of the last
              parameter is joined with the last part  of  the  original  word.
              When  there  are no positional parameters, "[email protected]" and [email protected] expand to
              nothing (i.e., they are removed).
       #      Expands to the number of positional parameters in decimal.
       ?      Expands to the exit status of the most recently  executed  fore‐
              ground pipeline.
       -      Expands  to  the  current option flags as specified upon invoca‐
              tion, by the set builtin command, or  those  set  by  the  shell
              itself (such as the -i option).
       $      Expands  to  the  process ID of the shell.  In a () subshell, it
              expands to the process ID of the current  shell,  not  the  sub‐
              shell.
       !      Expands  to  the  process ID of the most recently executed back‐
              ground (asynchronous) command.
       0      Expands to the name of the shell or shell script.  This  is  set
              at shell initialization.  If bash is invoked with a file of com‐
              mands, $0 is set to the name of that file.  If bash  is  started
              with  the  -c option, then $0 is set to the first argument after
              the string to be executed, if one is present.  Otherwise, it  is
              set  to  the file name used to invoke bash, as given by argument
              zero.
       _      At shell startup, set to the absolute pathname  used  to  invoke
              the  shell or shell script being executed as passed in the envi‐
              ronment or argument list.  Subsequently,  expands  to  the  last
              argument  to the previous command, after expansion.  Also set to
              the full pathname used  to  invoke  each  command  executed  and
              placed in the environment exported to that command.  When check‐
              ing mail, this parameter holds the name of the  mail  file  cur‐
              rently being checked.

http://blog.sina.com.cn/s/blog_6739945f0100sosu.html

特殊的shell变量:

$0  获取当前执行的shell脚本的文件名

$n  获取当前执行的shell脚本的第n个参数值,n=1..9

$*  获取当前shell的所有参数 “$1 $2 $3 …,受IFS控制

$#  获取当前shell命令行中参数的总个数

$$  获取当前shell的进程号(PID)

$!  执行上一个指令的PID

$?  获取执行的上一个指令的返回值(0 为成功, 非零为失败)

[email protected]  这个程序的所有参数 “$1″ “$2″ “$3″ “…”,不受IFS控制

注:

IFS:IFS(Internal Field Seperator)在Linux的shell中预设的分隔符,用来把command line分解成word(字段)。IFS可以是White Space(空白键)、Tab( 表格键)、Enter( 回车键)中的一个或几个。

对于[email protected]与$*的区别如下:
    这两个参数的不同点主要在于它们扩展参数的方式不同。当使用$*时,只是简单地在不保留引用的情况下扩展每个参数,这样会存在问题:当参数中存在空格时,该参数将被识别为多个参数使用,如:mytar
-t "my tar
file.tar",使用$*时将被识别成my、tar、file.tar坧个文件,而使用[email protected]时则识别成一个文件。

特殊的shell变量,布布扣,bubuko.com

时间: 2024-12-15 13:33:37

特殊的shell变量的相关文章

awk中使用shell变量

其实在awk里,是不能直接使用shell变量的 方法是:awk -v 选项让awk 里使用shell变量 TIME=60 awk -v time="$TIME" 'BEGIN{FS="|"} {if ($7>time) print $2 }' 这样要注意:在awk里,time不能加$符号. 网上说如下方法都可行: 一:"'$var'" 这种写法大家无需改变用'括起awk程序的习惯,是老外常用的写法.如: var="test&quo

8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件

8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件 扩展 bashrc和bash_profile的区别 http://ask.apelearn.com/question/7719 # 8.6 管道符和作业控制 ![mark](http://oqxf7c508.bkt.clouddn.com/blog/20170816/214503952.png?imageslim) - 管道符的命令就是把前面输出的结果交给后面的命令 ``` [[email protected] 

Linux学习日记—使用Shell变量

Shell变量用来存放系统和用户需要使用的特定参数(值),而且这些参数可以根据用户的设定或系统环境的变化而相应的变化. [变量的作用] 为灵活管理Linux系统提供特定参数,而有两层意思: 1.变量名:使用固定的名称,由系统预设或用户自定义 2.变量值:能够根据用户设置,系统环境的变化而变化 [变量的类型] 1.自定义变量:由用户自己定义,修改和使用 2.环境变量:由系统维护,用于设置工作环境 3.位置变量:通过命令行给脚本程序传递参数 4.预定义变量:Bash中内置一类变量,不能直接修改 [自

Linux下如何让 awk 使用 Shell 变量

当我们编写 shell 脚本时,我们通常会在脚本中包含其它小程序或命令,例如 awk 操作.对于 awk 而言,我们需要找一些将某些值从 shell 传递到 awk 操作中的方法.那么如何让 awk 使用 Shell 变量呢?兄弟连Linux培训接下来为大家介绍一下: 有两种可能的方法可以让 awk 使用 shell 变量: 1. 使用 Shell 引用 让我们用一个示例来演示如何在一条 awk 命令中使用 shell 引用来替代一个 shell 变量.在该示例中,我们希望在文件 /etc/pa

shell变量day01

变量 定义变量your_name="runoob.com" #变量名和等号之间不能有空格 使用变量your_name="qinjx"echo $your_nameecho ${your_name}echo "I am good at ${skill}Script"echo "I am good at ${skillScript}"加花括号是为了帮助解释器识别变量的边界 your_name="tom"your

三、Shell变量类型和运算符

一.Shell变量的应用 1.Shell变量的种类 ·用户自定义变量:由用户自己定义.修改和使用     ·预定义变量:Bash预定义的特殊变量,不能直接修改 ·位置变量:通过命令行给程序传递执行参数 2.变量的赋值与引用 ·定义新的变量 变量名要以英文字母或下划线开头,区分大小写 格式:变量名=变量值 · 查看变量的值 格式:echo $变量名 echo  "my name is $name" echo  "my name is ${name}bd" ·从键盘输入

shell变量的替换,命令的替换,转义字符

1,shell变量的替换 变量可以根据变量是否为空或者被删除,而被替换为特定的值 ${var}  变量本来的值 $(var:-word)   如果变量为空,或者已被删除那么返回word,但是不改变var的值 name="xiaoming" echo "xiaoming 's age is ${age:-12}" ech   "age = ${age}" >>>>>>>> xiaoming 's ag

linux中shell变量$#,[email protected],$0,$1,$2的含义解释

摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,[email protected],$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表.如"$*"用「"」括起来的情况.以&qu

shell变量详解

1 shell变量基础shell 变量是一种很“弱”的变量,默认情况下,一个变量保存一个串,shell不关心这个串是什么含义.所以若要进行数学运算,必须使用一些命令例如let. declare.expr.双括号等.shell变量可分为两类:局部变量和环境变量.局部变量只在创建它们的shell中可用.而环境变量则可以在创建 它们的shell及其派生出来的任意子进程中使用.有些变量是用户创建的,其他的则是专用shell变量.变量名必须以字母或下划线字符开头.其余的字符 可以是字母.数字(0~9)或下

Linux shell 变量 数学 运算

Abstract : 1)  Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算: 2)Linux shell 中使用 expr 与 bc 两个程序实现高级运算: 1, Linux shell 变量的基本运算 数值作为常规变量直接赋值给变量,并且以字符串形式保存. 1.1 let 命令可以用于直接执行基本操作:         当我使用 let 的时候,我们不使用 $ 符号引用变量. no1=7; no2=8; echo "---