扩展变量

以下四个扩展变量都属于对变量的值进行判断、处理: 实例,删除备份数据中过期数据的脚本:
find ${dir_path:=/data/mysql_back_data/} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f
以上命令在/data/mysql_back_data/目录中寻找后缀为.tar.gz、且修改日期大于7天的文件,将其作为参数传递给rm -f命令进行强制删除。

父子shell

ps -ef 中,-f用来显示UID、PID、PPID;-e 列出所有进程的信息,如同-A。linux中ps有--forest选项,可以列出进程树

shell的进程列表,需要使用小括号()。例如:
[lidapeng@X61s /root]$ (cd ~;ls;pwd; )
1.sh            del_data.sh     nohup.out       test.txt
2.sh            Downloads       sub_str
/home/lidapeng
[lidapeng@X61s /root]$

linux默认的有关shell的变量:
BASH_SUBSHELL
如果此变量值为0,表示此时是在当前shell中,否则是在子shell中。
[lidapeng@X61s /root]$ (cd ~;ls;pwd; echo $BASH_SUBSHELL)
1.sh            del_data.sh     nohup.out       test.txt
2.sh            Downloads       sub_str
/home/lidapeng
1
[lidapeng@X61s /root]$ (cd ~;ls;pwd; (echo $BASH_SUBSHELL))
1.sh            del_data.sh     nohup.out       test.txt
2.sh            Downloads       sub_str
/home/lidapeng
2
利用括号开启子shell的方法,以及检查,在shell脚本开发中,经常用子shell进行多进程处理以提高程序并发执行的效率。

内置命令和外置命令

使用type命令验证命令时内置还是外置。
[lidapeng@X61s /root]$ type cd
cd 是 shell 内建
[lidapeng@X61s /root]$ type exit
exit 是 shell 内建
[lidapeng@X61s /root]$ type ps
ps 已被录入哈希表 (/bin/ps)
[lidapeng@X61s /root]$ type ls
ls 已被录入哈希表 (/bin/ls)
[lidapeng@X61s /root]$ type pwd
pwd 是 shell 内建
[lidapeng@X61s /root]$ type find
find 已被录入哈希表 (/usr/bin/find)
使用compgen -b命令可以列出所有内置命令。