Bash:随机“?”附加到已启动屏幕的名称

时间:2012-07-15 01:57:37

标签: bash

我目前在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?开头。造成这种情况的原因是什么,我该如何解决?

1 个答案:

答案 0 :(得分:2)

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

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