0

我目前在 bash 中有一个 case 语句,如下所示:

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?。这是什么原因,我该如何解决?

4

1 回答 1

2

在某些行的末尾有额外的回车符(那些有趣的 s)。^MWindows 使用回车后跟换行符 (CRLF) 作为其行结尾,但 Linux 仅使用普通换行符,因此任何无关的回车有时会被解释为常规字符,尤其是在您的情况下。

要解决此问题,请手动从脚本中删除回车,或使用诸如dos2unix(1)转换行尾之类的程序(许多其他程序也可以这样做)。

于 2012-07-15T02:00:38.007 回答