如何在此脚本中正确添加返回字符?

时间:2016-01-15 20:19:02

标签: bash gruntjs npm jshint

这是我用来运行grunt“global”的脚本。它是在一个bash shell中,所以我想要更多的上下文,所以我想回归字符,以便在我运行beast watch时更加“沉默”。

beast() {
  cd ~/root_install/grunt
  local a="$1"
  if [ $# -eq 0 ]
  then
     grunt &
  fi
  if [ $# -eq 1 ]
  then
      grunt "$a" &
  fi
  cd ~/root
}

我想在这个部分找一个回归角色:

  grunt "$a" &
&

后的

2 个答案:

答案 0 :(得分:0)

当您运行grunt时,您将获得以下退出代码之一。

  • 0 - 没有错误!
  • 1 - 致命错误
  • 2 - 缺少gruntfile错误
  • 3 - 任务错误
  • 4 - 模板处理错误
  • 5 - 无效的shell自动完成规则错误
  • 6 - 警告

你可以做的就是像grunt "$a" &>/dev/null一样抓住它,然后使用$?

选择结果

因此,您可以对返回代码执行if [ $? -eq 0 ]之类的控件。

&>/dev/null这只是2>& 1

的缩写

它将文件描述符2和1(STDERR& STDOUT)重定向到/ dev / null

答案 1 :(得分:0)

如果您想要返回值,请为其指定返回值$?

   grunt "$a" > grunt.log 2>&1
   returnvalue=$?

您可以将grunt.log更改为/ dev / null。 在cd ~/root之后,您可以return ${returnvalue}。 当您希望grunt在后台运行时,您可以将行更改为

nohup grunt "$a" > grunt.log 2>&1 &

这将给你一个新的挑战:当在后台启动成功并且grunt在2秒内失败时,你的$? returnvalue不会注意到这一点 如何处理?
当returnvalue为0时,等待一段时间(20秒?)并检查日志文件。