linux下用debug方法调试的疑问(shell脚本问题)
发布于 8 年前 作者 xing393939 3685 次浏览 来自 问答

用了debug模块后在linux中启动: DEBUG=mydebug:* node app.js

我想知道前面的DEBUG=mydebug:* 是表示什么意思呢?

好像也不是定义变量的意思,因为我执行: DEBUG=mydebug:* echo ${DEBUG} 是输出空

执行: DEBUG=mydebug:* && echo ${DEBUG} 是输出mydebug:*

1 回复

DEBUG=mydebug:* echo ${DEBUG}

上面这句的意思是

  • 设置环境变量DEBUG为你要的值
  • 把且只把这个环境变量传入后面跟进的process
  • 因为 echo 引用DEBUG的时候,它期望DEBUG还在当前shell内,而这个语法并不在当前shell里设置DEBUG,所以输出为空
  • 而DEBUG=xxx node app.js中的node是一个单独进程,所以DEBUG是存在的 (process.env)
  • 如果把语句改成 DEBUG=hello sh -c ‘echo $DEBUG’ 这时候DEBUG被引用的时候,已经被传进心的‘sh’进程

DEBUG=mydebug:* && echo ${DEBUG}

上面这句的意思是

  • 设置DEBUG环境变量,并且对当前shell 进程是可见的
  • 如果设置成功,就执行echo,因为echo执行的时候DEBUG已经存在了(在当前shell),所以你看到了输出
回到顶部