exec 5>&2
exec 2> /tmp/$0.log
....
exec 2>&5
exec 5>&- //关闭fd5
重定向时, &其实相当于c语言中的*, &2即进程中的fd2指向的
system-wide opened file table中的终端
理解这个就不难理解以上的语句
exec没有程序参数时,就是改变shell的输入输出fd
exec在shell中 就直接接管shell了, 运行权不会重新恢复到shell中
而在shell中调命令, 则是fork, exec, 最终控制权会回到shell
shell中的通配符
? 单一字符
* 任何的字符字符串
[set] 任何在set里的字符
[!set] 任何不在set里的字符
命令替换 (command substitution)
尽量使用 $() 来替代 ``, 那是因为`` 里面的单引号,双引号都需要转义
引用(quoting) 是用来防止Shell将某些你想要的东西解释成不同的意义
举例来说, 如果你要命令接受含有meta字符的参数, 如 * 或 ? , 就必须将这些
meta字符用引号引起来
back slash
\ 单一字符转义
' ' 完全不处理''内的shell特殊字符, back slash在''内不能用
" " 处理shell内的特殊字符, 但是可以在""之内使用\进行转义
所以如果不打算原样输出使用''
希望shell做一些事情用" "进行引用
p191 有一张图
引用可用来避开执行程序的不同部分, eval命令可让你再经历一次这一流程.
执行两次命令行的处理, 看来似乎有点怪, 不过这却是相当好用的功能: 它让你
编写一个脚本, 可在任务中建立命令字符串, 再将他们传递给Shell执行. 这么一来,
你可以让脚本聪明地修改它们自己执行时的行为.
shell中 变量赋值 a=b "="两边不能有空格
todo中应该有一部分shell的总结 贴上来
shell script
最新推荐文章于 2023-04-13 16:06:26 发布