2012-07-15 32 views
0

我现在有在bash case语句看起来像这样:Bash:随机“?”附加到开始屏幕的名字

restart) 
    if kill -0 PID; then 
     while kill -0 PID; do 
      //exit script 
     done 
     screen -dmS screen1^M 
     screen -S screen1 -p 0 -X stuff '//code here'^M 
    else 
     //other stuff 
    fi 
    ;; 

当我使用这个脚本,屏幕意味着要开始为screen1开始为screen1?代替。这是什么原因,以及我将如何解决它?

回答

2

你有额外的carriage returns(那些有趣的^M s)在你的一些线的末尾。 Windows使用回车符跟随换行符(CRLF)作为行结束符,但Linux仅使用普通换行符,所以任何无关回车符有时都会被解释为常规字符,尤其是在您的情况下。

若要解决此问题,请手动从脚本中删除回车符或使用程序(如dos2unix(1))转换行结束符(许多其他程序也可以执行此操作)。