shell script

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的总结 贴上来










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值