这篇文章给大家介绍shell脚本中有哪些常用的内置变量,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
FUNCNAME美元,LINENO美元$ PWD
<代码> FUNCNAME 代码>和<代码> LINENO> 代码变量经常用于脚本的调试
<代码> FUNCNAME 代码>表示当前函数的名字,作用范围仅限函数中使用,在函数外无值
<代码> LINENO 代码>表示当前所在脚本中变量出现在的行号
<代码> PWD 代码>表示当前目录,对应于<代码> PWD 代码>命令
现有个脚本<代码>。sh> 代码内容如下
# !/bin/bash ,,外种皮() {才能 ,,,echo & # 39; func=& # 39; FUNCNAME, LINENO美元 ,,} ,外种皮 , echo 才能;& # 39;lineno: & # 39; lineno美元 echo 才能;& # 39;xx: & # 39; FUNCNAME美元 echo 才能;& # 39;curpath: & # 39; $ PWD
执行<代码>。/h 代码>命令,输出如下
[tt@ecs-centos-7 ~]美元。/h
引用>
func=甲壳,6
lineno: 12
xx:
curpath:/home/tt在<代码>甲壳代码>函数中<代码> FUNCNAME> 代码变量值是<代码>甲壳> 代码,也即函数名字,在函数外部无值
<代码> lineno> 代码变量无论是在函数中还是函数外,都表示当前所在的行号
$ $, $ PPID
这两个变量依次表示当前进程ID和父进程ID
现有<代码>。sh 代码>脚本,内容如下
<代码>睡眠20 代码>睡眠语句是为了让执行脚本进程暂缓退出,在另一个终端中验证输出的结果
# !/bin/bash # set - u echo & # 39; cur pid: & # 39; $ $ echo & # 39; parent pid: & # 39; PPID美元 sleep 20在当前终端执行<代码>。/h> 代码,结果如下
(tt@ecs-centos-7 ~),美元。/a.sh cur pid: 13095 parent pid: 12982在执行<代码>。sh> 代码的脚本进程退出之前,打开另一个终端,执行<代码> ps - o pid, ppid,时间,cmd - p 12982年,13095年代码>命令,结果如下
(tt@ecs-centos-7 ~),美元ps -o pid, ppid, cmd -p 12982年,13095年 ,,PID PPID ,,, TIME CMD 12982,12981,00:00:00 bash 13095,12982,00:00:00 /bin/bash 。/h从上面的结果可以看的出,执行<代码>。/h 代码>命令之后,$ $变量表示的是执行<代码>。sh 代码>脚本的进程ID 13095,而12982年是它的父进程ID,也即是<代码> PPID> 代码变量的值,它是当前bash的实例
$ 0 $ 1、$ 2…$ n, $ #
<代码> $ # 代码>表示从命令行传入脚本的参数数量
<代码> 0美元,$ 1、$ 2…$ n> 代码是从命令行传递到脚本的参数<代码> 0 代码>是脚本本身的名字
<代码> 代码> 1美元是第一个参数
<代码> 代码> 2美元是第二个参数,依此类推
<代码> $ n> 代码是第n个参数第十个参数及以后的参数必须要用大括号括起来,例如:${10},{11},{12}美元依次表示第十个变量,第十一个变量,第十二个变量
$ * $ @
都表示位置参数,不过它们之间也有些不同点
使用<代码> $ *> 代码时,如果加上双引号,即$ *的形式,那所有位置的参数会被当作一个单词来处理,如果不包含双引号,即$ *的形式,则每个位置的参数都被当作一个独立的单词来处理
而对于<代码> $ @> 代码,无论是否加上双引号,每个位置的参数都被当作一个独立的单词来处理
现有<代码> c。sh> 代码,内容如下
# !/bin/bash 问=1 echo & # 39; test 1111 & # 39; for var “$ *“拷贝 做 ,,echo “参数$问=? var ,,let “问+=1”; 完成 回声 问=1 echo & # 39; test 2222 & # 39; for var $ *拷贝 做 echo 才能“参数$问=? var let 才能“问+=1”; 完成 回声 问=1 echo & # 39; test 3333 & # 39; for var “拷贝@"美元; 做 echo 才能“参数$问=? var let 才能“问+=1”; 完成 回声 问=1 echo “test 4444“; for var $ @拷贝 做 ,echo “参数$问=? var cnt, let “+=1”; 完成了执行<代码>。/c。sh 1 2 3> 代码,结果如下
root@ecs-centos-7 ~ #。/c。sh测试1 2 3
shell脚本中有哪些常用的内置变量