shell的特殊重要内置变量

《1》位置变量

$0 获取当前执行的shell脚本的文件名,如果执行脚本带路径,那么就包括脚本路径。

$n 获取当前执行shell的命令行的第n个参数,当n=0时表示脚本的文件名,如果n>9,用{}将其括起来,参数以空格隔开。

$# 获取当前执行的shell脚本后面接的参数的总个数。

[root@localhost SHELL]# vim test.sh 
[root@localhost SHELL]# sh test.sh "how are you" hello
how are you hello 2 test.sh
[root@localhost SHELL]# cat test.sh 
echo $1 $2 $# $0
[root@localhost SHELL]# 

///////////////////加引号与否
[root@localhost SHELL]# vim test.sh 
[root@localhost SHELL]# sh test.sh how are you
how are
[root@localhost SHELL]# sh test.sh "how are you" hello
how are you hello
[root@localhost SHELL]# cat test.sh 
echo $1 $2

$*
$@

$@ 与 $* 的区别:
$* 将命令行的所有参数视为一个单独的字符串,等同于”$1$2$3”,”$*”

$@ 将命令行的每个参数视为单独的字符串,等同于”$1”, “$2”, “$3”.

dirname 与 basename

dirname 获取文件的路径名
basename 获取文件的名称

[root@localhost SHELL]# dirname /root/Desktop/SHELL/test.sh 
/root/Desktop/SHELL
[root@localhost SHELL]# basename /root/Desktop/SHELL/test.sh 
test.sh
[root@localhost SHELL]# 

$0的使用验证
这里写图片描述

《2》进程状态变量

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

[root@localhost SHELL]# echo $?
0
[root@localhost SHELL]# sh test1.sh 
ni hao, ming tian
[root@localhost SHELL]# echo $?
0
[root@localhost SHELL]# cat test1.sh 
echo 'ni hao, ming tian'
[root@localhost SHELL]# 

$? 的返回值的意义:

0 执行成功
2 权限不够
1~125 执行失败
126 找到该命令了,但是无法执行
127 未找到要运行的命令
大于128 命令被系统强制中断

提示: 在脚本中一般用 exit 数字,在执行脚本后,返回返回值给$?;;;; 在函数里用return 数字 返回返回值给$?

$! 获取执行上一个指令的PID
$$ 获取当前shell的进程号(PID)

[root@localhost SHELL]# sh test1.sh 
ni hao, ming tian
[root@localhost SHELL]# echo $$
5964
[root@localhost SHELL]# cat test1.sh 
echo 'ni hao, ming tian'
[root@localhost SHELL]# 

/////////////////
[root@localhost SHELL]# vim test.sh 
[root@localhost SHELL]# sh test.sh &
[2] 7733
[root@localhost SHELL]# cat /tmp/a.pid 
7733
[root@localhost SHELL]# cat test.sh 
echo $$ >/tmp/a.pid
sleep 200
[root@localhost SHELL]# 

$_ 获取在此之前执行的命令或脚本的最后一个参数

[root@localhost SHELL]# ls ./
test1.sh  test.sh  UNIX.shell范例精解(第4版).pdf
[root@localhost SHELL]# echo $_
./
[root@localhost SHELL]# 

//////
[root@localhost SHELL]# cat test.sh 
echo $1 $2 $# $0
[root@localhost SHELL]# echo $_
test.sh
[root@localhost SHELL]# sh test.sh hello world
hello world 2 test.sh
[root@localhost SHELL]# echo $_
world
[root@localhost SHELL]# 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值