Shell中特殊的变量

$表示当前的进程,当使用echo $$是会输出当前shell的pid

1 echo $$
特殊变量列表
变量 含义
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
[email protected] 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

脚本文件varlist.sh

1 #!/bin/bash
2
3 echo "File name: $0"
4 echo "First parameter: $1"
5 echo "Second Parameter: $2"
6 echo "Quoted Values: [email protected]"
7 echo "Quoted Values: $*"
8 echo "Total Number of Parameter : $#"

执行varlist.sh hello world结果输出如下:

$ sh ./varlist.sh hello world
File name: ./varlist.sh
First parameter: hello
Second Parameter: world
Quoted Values: hello world
Quoted Values: hello world
Total Number of Parameter : 2

$*与[email protected]的区别:

当使用""是会出对于他们存在差异,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"[email protected]" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。 看下面的例子:

 1 #!/bin/bash
 2 #description: use variable
 3 #Author: blacksonny
 4 #Copyright (c)
 5 #Script follows here:
 6
 7 echo "\$*=" $*
 8 echo "\"\$*\"=" "$*"
 9
10 echo "\[email protected]=" [email protected]
11 echo "\"\[email protected]\"=" "[email protected]"
12
13 echo "print each param from \$*"
14 for var in $*
15 do
16     echo "$var"
17 done
18
19 echo "print each param from \[email protected]"
20 for var in [email protected]
21 do
22     echo "$var"
23 done
24
25 echo "print each param from \"\$*\""
26 for var in "$*"
27 do
28     echo "$var"
29 done
30
31 echo "print each param from \"\[email protected]\""
32 for var in "[email protected]"
33 do
34     echo "$var"
35 done

输出结果:

 1 $ sh ./varcompare.sh "a" "b" "c" "d"
 2 $*= a b c d
 3 "$*"= a b c d
 4 [email protected]= a b c d
 5 "[email protected]"= a b c d
 6 print each param from $*
 7 a
 8 b
 9 c
10 d
11 print each param from [email protected]
12 a
13 b
14 c
15 d
16 print each param from "$*"
17 a b c d
18 print each param from "[email protected]"
19 a
20 b
21 c
22 d

退出状态:

$? 可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。
退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1。

时间: 2024-12-16 16:03:52

Shell中特殊的变量的相关文章

bash shell中的环境变量

环境变量--bash shell使用环境变量来存储系统相关数据,并允许将数据存储在内存中. 环境变量分为:全局环境变量 本地环境变量 目录 全局环境变量 本地环境变量 设置全局环境变量 删除环境变量 PATH全局环境变量 设置系统环境变量的相关文件(登录.非登录.交互.非交互shell) 一.全局环境变量 在当前shell和子shell都可见 可以用printenv命令查看全局环境变量,大写表示是系统环境变量,小写表示是普通用户的环境变量 这是bash shell的一个标准约定,不是必须的,因此

shell中的特殊变量IFS

当我越来越习惯python的编写风格时,我经常会想用bash去遍历一个文件的行,并将读取的行进行处理. 但一个诡异的情况,如果我的文本类似于这样 the first line. the second line. the third line. for line in `cat filename` do echo $line done 当我通过上面的方式遍历文件的每一行,我发现读出来的数据是这样的: the first line. the second line. the third line.

shell 中的 特殊变量类型数组

shell 中两种数据类型:一是数值类型,二是字符串类型:虽然shell本身是弱类型的,但也可以这么区分.如果我们需要在shell中一个变量中存储多个值,那么就需要一个更方便的类型数组数组在shell中是用括号括起来每个值之间用空格隔开就定义了一个数组a=(1 2 3 4 5)a=("a" "b" "c" "d" "e")a=(1 "a" 2 "b")都是可以的 数组

shell中的环境变量:local,global,export

 1.local一般用于局部变量声明,多在在函数内部使用.实例如下:      echo_start() { local STR="$1" echo "...... ${STR} ......starting at $(date)" } 2.Shell脚本中定义的变量是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止. 3.export 将自定义变量设定为系统环境变量(仅限于该次登陆操作,当前shell中有效)    语法:expo

Shell中的特殊变量($0、$#、$*、[email protected]、$$、$!、$?、$1~$n)

在Shell中,$*和[email protected]分别代表如下含义: $0 : 脚本自身的名称 $# : 位置参数的个数 $* : 所有的位置参数都会被看成一个字符串 [email protected] : 每个位置参数会被看做一个独立的字符串 $$ :  当前进程的PID $! : Shell最后运行的后台进程的PID $?  :    返回上一次命令是否执行成功:0表示执行成功,非0表示执行失败 $1~$n : 添加到Shell的各参数值.$1是第1参数.$2是第2参数-. 示例: #

SHELL中的特殊变量

特殊变量: $# 传递到脚本的参数个数;      $* 以一个单字符串显示所有向脚本传递的参数.与位置变量不同,此选项参数可超过9个;      $$ 脚本运行的当前进程ID号;      $! 后台运行的最后一个进程的进程ID号;      [email protected] 与$*相同,但是使用时加引号,并在引号中返回每个参数;      $- 显示shell使用的当前选项,与set命令功能相同;      $? 显示最后命令的退出状态.0表示没有错误,其他任何值表明有错误; 位置变量:

Linux shell 中判断一个变量是否为空 的方法

判断一个脚本中的变量是否为空,我写了一个这样的shell脚本: #!/bin/sh #filename: test.sh para1= if [ ! -n $para1 ]; then echo "IS NULL" else echo "NOT NULL" fi 然后把该脚本:test.sh通过chmod +x 改为可以执行的脚本,执行后输出的结果为: NOT NULL,很是奇怪,最后,通过查询一些资料发现,可以通过如下方式判断一个shell变量是否为空: 1. 变

SHELL中常用特殊变量

$0 获取当前执行的SHELL脚本的文件名,包括路径. 注:basename 只要文件名,dirname 只要文件所以路径. $n 获取当前的执行的shell脚本的第n个参数值,n=1-9,当n为0时表示脚本的文件名,如果n大于9,用大括号括起${10}. $# 获取当前shell命令行终参数的总个数,命令演示如上图所示. $? 获取执行上一个指令的返回值(0为成功,非0为失败)#这个变量很常用

linux shell中的位置参数变量

要了解位置变量,首先要知道什么是变量? 变量就是让某一个特定的字符串来代表不固定的内容,简单理解就是用一个简单的"字眼"来替代另一个比较复杂或者容易变动的数据. 而什么又是位置变量呢? 位置变量就是bash将传递给脚本的参数,按照位置不同,保存在不同的位置变量中,以便于脚本调用这些变量. 位置参数变量: $1, $2, ...: 对应第1.第2等参数,shift [n]换位置 $0:  命令本身 $*:  传递给脚本的所有参数,全部参数合为一个字符串:代表"$1$2$3...