sh脚本中的管道回显用“?”创建文件名

时间:2014-02-16 13:14:13

标签: echo pipe filenames sh

我遇到一个相当奇怪的问题,一个echo命令在脚本中导致。 它应该是非常基本的东西,但仍然有一些“关闭”。

假设我有这个脚本:

#!/bin/bash
# SERVERPID='cat lite_server_pid.txt'
# kill -9 $SERVERPID
nohup java -Xmx3G -Xms2G -jar tekkit_lite_065.jar nogui > output.txt &
echo $! > lite_server_pid.txt

是的,这会启动我自己的小Minecraft / Tekkit-Server。 ; - )

问题是,创建的文件(由于某种原因)命名为

lite_server_pid.txt? 

和是,这包括“?”!在shell中执行相同的命令,没有文件?是正确创建的!此外,文件的内容是所需的processID。 还是,?文件名后面是一个主要问题...... 我做错了什么?

1 个答案:

答案 0 :(得分:1)

检查文件中的DOS行结尾。我怀疑?实际上是你的终端尝试显示回车符(\r)。由于bash需要UNIX样式的换行符,因此DOS换行符(\r\n)的回车部分被视为文件名的合法字符。

通过dos2unix运行您的脚本。