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 命令,

注意:在[[]]结构中,将没有文件扩展或者是单词分离,但是会发生参数扩展和命令替换.

posted @ 2018-08-12 18:32  WorldsCollide  阅读(42)  评论(0)    收藏  举报