2.4.4 其他相关
学习目标
这一节,我们从 基础知识、简单实践、小结 三个方面来学习
基础知识
脚本相关的变量解析
序号 | 变量名 | 解析 |
1 | $_ | 在此之前执行的命令或脚本的第一个内容 |
2 | $@ | 传给脚本的所有参数 |
3 | $* | 是以一个单字符串显示里所有向脚本传递的参数,与位置参数不同,参数可超过9个 |
4 | $$ | 是脚本运行的当前进程的ID号,作用是方便以后管理它杀掉他 |
5 | $! | 前一条命令进程的ID号,作用是方便以后管理它杀掉他 |
简单实践
实践1 - 其他变量的作用
[root@localhost ~]# cat get_other.sh
#!/bin/sh
echo "脚本执行命令的第一个内容: $_"
echo "传递给当前脚本的所有参数是: $@"
echo "单字符串显示所有参数: $*"
echo "当前脚本执行时候的进程号是: $$"
sleep 5 &
echo "上一条命令执行时候的进程号是: $!"
实践2 - $$ 获取当前的进程号
查看当前的进程号
[root@localhost ~]# echo $$
4759
[root@localhost ~]# ps aux | grep 4759
root 4759 0.0 0.0 116712 3356 pts/1 Ss 00:11 0:00 -bash
root 5547 0.0 0.0 112828 984 pts/1 S+ 02:00 0:00 grep --color=auto 4759
杀死当前的进程
[root@localhost ~]# kill -9 4759
───────────────────────────────────────────
Session stopped
- Press <return> to exit tab
- Press R to restart session
- Press S to save terminal output to file
实践3 - $@ 和 $* 的区别
定制father脚本
[root@localhost ~]# cat father.sh
#!/bin/bash
echo "$0: 所有的参数 $@"
echo "$0: 所有的参数 $*"
echo '将 $* 值传递给 child-1.sh 文件'
/bin/bash child-1.sh "$*"
echo '将 $@ 值传递给 child-2.sh 文件'
/bin/bash child-2.sh "$@"
定制两个child脚本
[root@localhost ~]# cat child-1.sh
#!/bin/bash
echo "$0: 获取所有的参数 $1"
[root@localhost ~]# cat child-2.sh
#!/bin/bash
echo "$0: 获取所有的参数 $1"
执行 father.sh 脚本
[root@localhost ~]# /bin/bash father.sh 1 2 3
father.sh: 所有的参数 1 2 3
father.sh: 所有的参数 1 2 3
将 $* 值传递给 child-1.sh 文件
child-1.sh: 获取所有的参数 1 2 3
将 $@ 值传递给 child-2.sh 文件
child-2.sh: 获取所有的参数 1
小结