Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
unix bash-意外的文件结尾_Bash_Unix - Fatal编程技术网

unix bash-意外的文件结尾

unix bash-意外的文件结尾,bash,unix,Bash,Unix,这让我真的很疯狂,我花了一整天来处理这种格式的东西。 脚本如上所示,打印出意外的文件结尾 如果我删除最后一行,它将不会打印任何不正确的内容。 我真的不知道它出了什么问题。使用dos2unix从脚本中删除DOS行结尾。如果该选项不可用,则可以使用以下选项: #!/bin/bash maxDate='00000000' fileDate='20140507' if [[ $maxDate == '00000000' ]]; then echo "right" fi echo $fileDa

这让我真的很疯狂,我花了一整天来处理这种格式的东西。 脚本如上所示,打印出意外的文件结尾 如果我删除最后一行,它将不会打印任何不正确的内容。
我真的不知道它出了什么问题。

使用
dos2unix
从脚本中删除DOS行结尾。如果该选项不可用,则可以使用以下选项:

#!/bin/bash
maxDate='00000000'
fileDate='20140507'
if [[ $maxDate == '00000000' ]]; then   
  echo "right"
fi
echo $fileDate
tr-d'\r'myscript.tmp
mv myscript.tmp myscript

问题出在哪里?请使用
cat--show nonprinting filename
检查文件。文件中可能有DOS行结尾。这意味着
then
实际上是
then\r
,它
bash
不认为是终止启动
if
命令的命令列表,这意味着
bash
解析器在找到
if
语句的结尾之前到达了文件的结尾。我不完全理解您的意思,就像我的脚本文件名是text一样,就像你说的,我键入了tr-d'\r'text.tmp mv text.tmp text。没用了谢谢先生,我已经修好了!
tr -d '\r' < myscript > myscript.tmp
mv myscript.tmp myscript