1、Shell中的特殊位置参数变量
$0 获取当前执行的shell脚本文件名
$n 获取当前执行的shell脚本的第n个参数值,n=1..9 当n为0时表示脚本的文件名,
n大于9,则用大括号括起来,如${10}
$# 获取当前执行的shell脚本后面接的参数的总个数
$* 获取当前shell脚步所有传参的参数 不加引号和$@想同 加双引号 "$*" 表示将所有的参数视为单个字符串"$1 $2 $3"
$@ 获取当前shell脚步所有传参的参数 不加引号和$*想同 加双引号 "$@" 表示将所有参数视为不同的独立字符串 相当于 "$1""$2""$3"
(1)$1 $2…$9 ${10} ${11}
实例:测试 $n
[root@localhost shell]# cat p.sh
echo $1
echo "脚本名为:$0"
[root@localhost shell]# sh p.sh shell mysql
shell
脚本名为:p.sh
[root@localhost shell]# ls
p.sh test.sh
[root@localhost shell]# sh p.sh shell mysql
shell
脚本名为:p.sh
[root@localhost shell]# sh p.sh "shell mysql"
shell mysql
脚本名为:p.sh
同时传入2个参数:
[root@localhost shell]# cat p.sh
echo $1 $2
echo "脚本名为:$0"
[root@localhost shell]# sh p.sh shell mysql
shell mysql
脚本名为:p.sh
(2)$0特殊变量的作用及变量实践
$0的作用为取出执行脚本的名称(包括路径)
(3)$#特殊变量获取脚本传参个数的实践
[root@localhost shell]# sh q.sh 1 2 3 4 5
1 2 3 4
[root@localhost shell]# cat q.sh
echo $1 $2 $3 $4
(4)$*和$@特殊变量功能及区别说明
2、Shell进程中的特殊状态变量
$? 获取执行上一个指令的执行状态返回值 0 成功 非0失败
$$ 获取当前执行的shell脚本进程号 PID
$! 获取上一个在后台工作的进程的进程号(PID)
$_ 获取再此之前执行的命令或脚本的最后一个参数
(1)$? 特殊变量功能实践
[root@localhost shell]# pwd
/root/shell
[root@localhost shell]# echo $?
0
[root@localhost shell]# ls /root
anaconda-ks.cfg redis-6.2.6 模板 下载
initial-setup-ks.cfg redis-6.2.6.tar.gz 视频 音乐
mysql-8.0.33-linux-glibc2.28-x86_64.tar.gz shell 图片 桌面
mysql80-community-release-el7-3.noarch.rpm 公共 文档
[root@localhost shell]# echo $?
0
[root@localhost shell]# echo $?
0
[root@localhost shell]# oldoby
bash: oldoby: 未找到命令...
[root@localhost shell]# echo $?
127
(2)$$特殊变量功能及实践
(3)$_特殊变量功能说明及实践
(4)$!特殊变量功能说明及实践
3、bash Shell内置变量命令
常用的内部命令有:echo、eval、exec、export、read、shift
(1)echo在屏幕上输出信息
echo 选项:
-n
-e
转义字符
\n 换行
\r 回车
\t 制表符
\b 退格
\v 纵向制表符
(2)eval
(3)exec
(4)read
(5)shift
(6)exit
4、Shell变量子串知识及实践
5、Shell特殊扩展变量的知识与实践