今天在修改一个脚本时,出现一个比较奇怪的问题:定时任务执行到一个子脚本时好似跳过去了,继续执行该子脚本后边的程序,但是当不设置定时任务,直接执行该脚本时,这个脚本中的此子脚本又可以执行了。
经过比较确认,主要是由于该子脚本的执行方式是调试执行模式,即:sh -x abc.sh。其中-x选项表示调试模式,即执行脚本中的每条语句都会打印出来,并且其中的变量会被替换为变量的值,在调试脚本的过程中是首选方式,可以对脚本中的每条语句都有清晰的理解。
说到shell的选项,其还有一个比较有用的选项:-n,该选项主要是为你检查shell的语法是否有错误,执行时选择该选项,并不会对该脚本进行运行,知识起检查语法的作用,这样可以预防你前期编写的脚本,由于语法错误导致产生一些对系统,或者其他方面的问题。
总之,在定时任务中不可以使用-x选项,这样会导致该脚本无法进行执行。