我目前在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?
开头。造成这种情况的原因是什么,我该如何解决?
答案 0 :(得分:2)
你的某些行的末尾有额外的carriage returns(有趣的^M
s)。 Windows使用回车符后跟换行符(CRLF)作为行结尾,但Linux只使用普通换行符,因此任何无关的回车符有时会被解释为常规字符,特别是在您的情况下。
要解决此问题,请手动从脚本中删除回车符,或使用dos2unix(1)
之类的程序转换行结尾(许多其他程序也可以执行此操作)。