计算机网络/计算机科学与应用/系统/运维/开发

四、Shell中特殊且重要的变量

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特殊扩展变量的知识与实践


照顾好自己,如果尚有余力,记得保护美好的东西,不畏不惧赤诚善良。

评论

^