shell脚本之特殊变量(位置变量、内置变量echo、exec、read、shift、exit...)

1、常用的特殊位置参数变量说明


位置变量 作用说明
$0 获取当前执行的Shell脚本的文件名,如果执行脚本包含了路径,那么就包括脚本路径
$n 获取当前执行的Shell脚本的第n个参数值,n=1…9当n为0是表示脚本的文件名;如果n>9,则用大括号括起来,例如${10},接的参数以空格隔开
$# 获取当前执行的Shell脚本后面接的参数的总个数
$* 获取当前执行的Shell脚本所有传参的参数,不加引号和$@相同;如果给 $ * 加上双引号,例如:“ $ * ”,则表示将所有的参数视为单个字符串,相当于“$1$2$3”
$@ 获取当前执行的Shell脚本所有传参的参数,不加引号和 ∗ 相 同 , 如 果 给 *相同,如果给 @加上双引号,例如:“ $ @ ”,则表示将所有的参数视为不同的单个字符,相当于“$1”“$2“” 3 ” 这 是 将 多 个 参 数 传 递 给 其 他 程 序 的 最 佳 方 式 , 因 为 他 会 保 留 所 有 的 内 嵌 在 每 个 参 数 里 的 任 何 空 白 。 当 “ 3”这是将多个参数传递给其他程序的最佳方式,因为他会保留所有的内嵌在每个参数里的任何空白。当“ 3@”“$*”加引号意思不同,不加引号两者无区别。

看实例更易懂哦!

[root@centos ~]# set -- This "is a" test   #用“”括起来算一个字符哦
[root@centos ~]# echo $#
3
[root@centos ~]# echo $1
This
[root@centos ~]# echo $2
is a
[root@centos ~]# echo $*
This is a test
[root@centos ~]# echo $@
This is a test
[root@centos ~]# for i in $*;do echo $i;done
This
is
a
test
[root@centos ~]# for i in $@;do echo $i;done
This
is
a
test
[root@centos ~]# for i in "$@";do echo $i;done
This
is a
test
[root@centos ~]# for i in "$*";do echo $i;done
This is a test

2、shell进程的特殊状态变量说明


位置变量 作用说明
$? 获取执行上一个指令的执行状态返回值(0成功,非0失败)
$$ 获取当前执行的shell脚本的进程号(PID)
$! 获取执行上一个在后台工作的进程的进程号(PID)
$- 获取在此之前执行的命令或脚本的最后一个参数

3、shell的内置变量


(1)echo

参数选项 说明
-n 不换行输出内容
-e 解析转义字符
转义字符 说明
\n 换行
\r 回车
\t 制表符(tab)
\b 退格
\v 纵向制表符

(2)exec

exec 命令:能够在不创建新的子进程的前提下,转去执行指定的命令,当指定的命令执行完毕后,该进程(也就是最初的Shell)就终止了
shell脚本之特殊变量(位置变量、内置变量echo、exec、read、shift、exit...)_第1张图片

(3)read读取文件

(4)shift

命令格式: shift-Shift positional parameters

功能: shift 语句会按如下方式重新命名所有的位置参数变量,即$2成为$1. $3成为$2等,以此类推,在程序中每使用- -次shift语句,都会使所有的位置参数依次向移动一个位置,并使位置参数S#减1,直到减到0为止。

(5)exit:退出shell程序,在exit之后可以有选择的指定一个数位作为返回状态

你可能感兴趣的:(Linux中shell脚本编程)