在Shell里存在的片段特种变量:$澳门金沙国际,!、$@、$#、$$、$*、$0、$n、$_、$?

 

岗位变量

 

 

澳门金沙国际 1

(大讲坛:国内第一个it在线教育混合式自适应学习)

 

统中实行普通运转可能是编写脚本时,变量是再纯熟不过的了,但那几个变量都有哪些类型,具体的用法又有何样分裂呢?本文整理分享给大家:

   壹 、bash变量类型:

   本地变量

   局地变量

   环境变量

   地点变量

   特殊变量(内置)

   ② 、本地变量:

   varname=value:功效域为全部bash进程能够选用;

   变量命名规范:

   1. 不得不含字母、数字和下划线,并且以字母和下划线初叶

   2. 最好不要跟系统已部分环境变量重名

   3. 见名知意

   叁 、局地变量:

   local varname=value:功能域为当前代码段;

   肆 、环境变量:

   作用域为当下shell进度及其子进度,不可能影响到其父进度;

   export varname=value “导出”,假使变量已经定义能够只是用变量名 export
varname,即

   1. export varname=value

   2. varname=value

   export varname

   脚本在执行命令时会运行一个子shell环境变量:

   系统自动执行的脚本(非命令行运行)就须求小编定义须求的个环境变量;

   伍 、地点变量:

   $1,$2,$3,……

   cat first.sh test.txt hello

   $1: first.sh

   $2: test.txt

   $3: hello

   shift:踢掉参数

   shift n:踢掉n个参数,暗中同意踢掉三个参数

   六 、特殊变量:

   $?:上3个指令执市场价格况的再次来到值:

   程序执行也许有三种返回值:

   1. 程序执行结果

   2. 主次状态再次来到吗(0-255)

   0 则为实施科学

   1-255 则实行出错(1,2,127类别留住);

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

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

   $@:那一个程序的享有参数 “$1″ “$2″ “$3″ “…”,不受IFS控制

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

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

   $$ 获取当前shell的经过号(PID)

   $! 执行上三个限令的PID

 

[root@shell ~]# sh shell.sh aaa bbb ccc
奇异变量浅识,Shell的新鲜变量。$0 获取当前推行的shell脚本的文件名:shell.sh
$n 获取当前实施的shell脚本的第n个参数值,n=1..9:$1=aaa $2=bbb $3=ccc
$* 获取当前shell的享有参数”$1 $2 $3 …在意与$#的区别:”aaa bbb ccc
$# 获取当前shell命令行中参数的总个数:3
$$ 获取当前shell的进度号(PID):2823
$! 执行上三个限令的PID:2824
$? 获取执行的上七个指令的重回值:0
$@ 这么些顺序的有所参数”$1″ “$2” “$3” “…” :aaa bbb ccc
$_ 从前执行的命令或脚本的最后多个参数:ccc

########################

$0 
获取当前实施的shell脚本的文件名,假设进行脚本带路径那么就归纳剧本路径
[root@linuxidc shell]# sh n.sh 
n.sh
 
[root@linuxidc ~]# sh /shell/n.sh 
/shell/n.sh
 
[root@linuxidc shell]# sh `pwd`/n.sh
/shell/n.sh

 

总括多少个独特的shell变量:

澳门金沙国际 2

注:

########################

$n 
获取当前实践的shell脚本的第n个参数值,n=1..9,当n为0时期表脚本的文书名,假若n大于0,大括号括起来${10}
本子内容:
#!/bin/bash
echo $1
 
[root@linuxidc shell]# sh p.sh linuxidc    #1个参数
linuxidc                                                               
                                                   
 
[root@linuxidc shell]# sh p.sh linuxidc cainiao   
#一个参数输出的是率先个参数
linuxidc

$*与$@是有去其余:

############################################################

$* 
获取当前shell的拥有参数,将具备的命令行参数视为单个字符串,也就是”$1$2$3″…..注意与$#的区域

  $*是将命令行全体的参数当成单个字符,例如”$1$2$3″

#

$#  获取当前履行的shell脚本后边接的参数的总个数

  $@是将下令行每贰个的参数当成单独的字符,例如”$1“ ”$2“ ”$3“

#

[root@linuxidc shell]# cat p.sh 
echo $1
echo $#
[root@linuxidc shell]# sh p.sh {a..z}
a
26
 
公司应用:(控制用户参数输入的个数)当输入参数不等于2建立输出“muse
two”,侧不创造会输出”buchengli”
[root@linuxidc shell]# cat 1p.sh 
#!/bin/bash
[ $# -ne 2 ] && {
echo “muse two”
exit 1          #值1是脱离后$? 的值
}
echo “buchengli”
[root@linuxidc shell]# sh 1p.sh bai
muse two
[root@linuxidc shell]# sh 1p.sh bai shu
buchengli
[root@linuxidc shell]#

############################################################

$@  这几个程序的有着参数”$1″ “$2” “$3”
“…”,那是将参数字传送递给其余程序的一流格局,因为她会保留内嵌在种种参数里的别的空白。

 特殊的shell变量:

$*和$@的不一致例子
$*  将装有的命令行全部参数视为单个字符串,等同于”$1$2$3″,”$*”

$0  获取当前实践的shell脚本的公文名

$@  将命令行各类参数视为单独的字符串,等同于”$1″ “$2”
“$3”.那是将参数字传送递给其余程序的近日格局,因为他会保留全数内嵌在种种参数里的别样空白。

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

专注:上述区别仅在于加双引号的时候,即”$*”与”$@”

$*  获取当前shell的具有参数 “$1 $2 $3 …注意与$#的区别

shift  移动地点变量

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

2.进度状态变量
$$    获取当前shell的长河号
$!    执行上2个命令的PID
$?    获取执行上一个下令的再次来到值(0为打响,非零为战败)#这一个变量很常用
$_      在此以前执行的一声令下或脚本的最后二个参数

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

正文永久更新链接地址:http://www.linuxidc.com/Linux/2017-06/145001.htm

$!  执行上贰个下令的PID

澳门金沙国际 3

$?  获取执行的上3个限令的重返值(0 为成功, 非零为失败)

[email protected] 
那几个程序的有所参数 “$1″ “$2″ “$3″ “…”

比喻(通过脚本举例,我们也得以一行行履行测试):

[[email protected]
test]# cat etiantian.sh

echo ‘$0  获取当前施行的shell脚本的文本名:’$0

echo ‘$n  获取当前推行的shell脚本的第n个参数值,n=1..9:’ ‘$1′=$1 ‘$2′=$2
“\$3=$3″

echo ‘$*  获取当前shell的全体参数 “$1 $2 $3 …注意与$#的区别:’$*

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

echo ‘$$  获取当前shell的长河号(PID):’$$

sleep 2 &

echo ‘$!  执行上四个命令的PID :’$!

echo ‘$?  获取执行的上3个下令的再次来到值:’$?

echo
‘[email protected] 
那么些顺序的持有参数 “$1″ “$2″ “$3″
“…”:’[email protected]

剧本执行结果(大家细心看):

[[email protected]
test]# sh etiantian.sh 参数1 参数2 参数3

$0  获取当前履行的shell脚本的文本名: etiantian.sh

$n  获取当前实施的shell脚本的第n个参数值,n=1..9: $1=参数1 $2=参数2
$3=参数3

$*  获取当前shell的装有参数 “$1 $2 $3 …注意与$#的区别: 参数1 参数2
参数3

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

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

$!  执行上三个发令的PID : 2063

$?  获取执行的上1个命令的重回值: 0

[email protected] 
那些程序的全数参数 “$1″ “$2″ “$3″ “…”: 参数1 参数2 参数3

[[email protected]
test]# sh etiantian.sh ryan jeacen david

$0  获取当前执行的shell脚本的文件名: etiantian.sh

$n  获取当前进行的shell脚本的第n个参数值,n=1..9: $1=ryan $2=jeacen
$3=david

$*  获取当前shell的具有参数 “$1 $2 $3 …注意与$#的区别: ryan jeacen
david

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

$$  获取当前shell的长河号(PID): 2160

$!  执行上二个指令的PID : 2161

$?  获取执行的上1个下令的重返值: 0

[email protected] 
那几个顺序的持有参数 “$1″ “$2″ “$3″ “…”: ryan jeacen david

总括多少个奇特的shell变量:
########################
############################################################
# #…

相关文章