2015-11-12 108 views
1

我发现造成不可预料的文件“开始”和修改简单的shell脚本来启动/停止一个罐子,但启动脚本时,它会创建一个额外的空start文件。shell脚本在启动过程

我不明白为什么。任何线索?

#!/bin/bash 
case $1 in 
    start) 
     if [[ -e myprog.pid ]] 
     then 
      echo "myprog.pid found. Is myprog already running?" 
     else 
      exec java -jar myprog-0.0.1-SNAPSHOT.jar 1>/dev/null 2>$1 & 
      echo $! > myprog.pid; 
     fi 
     ;; 
    stop) 
     kill $(cat myprog.pid); 
     rm myprog.pid 
     ;; 
    *) 
     echo "usage: myprog {start|stop}" ;; 
esac 
exit 0 
+0

从这里,这是不可能知道发生了什么。请反编译jar文件并显示相应的源代码。 – Dominique

+0

@Dominique这不是紧靠罐子。如果我在没有脚本的情况下启动jar,则不会创建该文件。 – Enrichman

+1

'exec'和'&'没有意义。这不仅仅是一个信息问题。放下'exec'。你不需要它。 –

回答

3

您的问题是2>$1。这是一个错字。

你的意思2>&1

你写什么由shell扩展为2>start,并创建您的文件。

+0

谢谢!完全错过了! – Enrichman

+0

为了记录,而http://www.shellcheck.net/并没有具体说明这一点(因为它不能),它会导致你去“吧?”当它警告你引用你在该地点的可变扩展。 –

+0

我不知道这件事,添加到收藏夹(旁边regex101)!啊啊 – Enrichman