智者,既能奋发不休,又能尽人事,顺天命
分类: LINUX
2010-06-01 09:52:27
《UNIX shell范例精解》中提到shell会将命令串读两遍,第一遍是设置trap时读一遍、第二遍是信号到达时读一遍。因此当使用双引号时,变量展开和命令替换会在第一遍读取发生,而使用单引号则会在第二遍读取时发生。
|
跟踪这个脚本,当使用双引号时,调用tt后,设置命令就变为
|
以后当信号到达时,直接执行ss。
当使用单引号,调用tt后,设置命令依然是
|
以后当信号到达时,先执行
|
然后在执行ss。
也就是说,当使用单引号之后,每次信号到达都会重复执行变量展开和命令替换。