shell高级编程第二部分
1:在()中的命令列表,将作为一个子shell 来运行,还有管道命令
2:test.sh: ls -l & ; echo "Done" 主进程将ls -l放在后台执行,继续运行echo,直接退出,这时ls -l还没运行完,就会导致主进程退出,子进程还在运行,成为孤儿进程的结果
改进: ls -l &; echo "Done",wait;即可解决问题;程序不会继续往下执行,知道ls -l 完成。
3:cp拷贝文件夹:cp -a ./source/* ./dest/ 而不是cp -a ./source/* ./dest/*.因为/dest/*不是目录。
4:命令替换: 1:反引号``,用法: MySQL = `ls -l`;echo $MYSQL;(不引用变量是要删除换行符的),echo "$MYSQL"
2:$(...);
5:使用引用的形式, 允许在变量赋值的时候存在空格. let z=z+3 let "z += 3"
6:bash的通配机制和正则表达式不一样,比如^在前者表示取反,但是在后者表示开头
7:()括号机制
在子shell 里的变量不能被这段子shell 代码块之外外面的脚本访问.这些变量是不能被
产生这个子 shell 的父进程(parent process)存取的,实际上它们是局部变量
8:以后只用[[]]; [[]]结构比Bash 的[]更加灵活,这是一个扩展的test 命令,
注意:在[[]]结构中,将没有文件扩展或者是单词分离,但是会发生参数扩展和命令替换.

浙公网安备 33010602011771号