文件行在执行时被改变
Posted
技术标签:
【中文标题】文件行在执行时被改变【英文标题】:file lines get altered at execution 【发布时间】:2015-03-19 13:50:05 【问题描述】:我有一个包含以下命令的 shell 脚本:
#!/bin/bash
. ../setup/MAXCR_setenv.sh
if [ ! -f "/home/MAXCR/extract/MYDOMAIN.sql" ]
then
...
当我运行它时,我得到以下错误:
:command not foundenv.sh: line 17
File /MYDOMAIN.sql not found
就好像每个命令的前 19 个字符都被操作系统吞噬了(见下文):
. ../setup/MAXCR_setenv.sh
1234567890123456789
/home/MAXCR/extract/ALNDOMAIN.sql
1234567890123456789
这个程序曾经在那台机器上运行。 我怀疑设置发生了变化,或者它以某种方式尝试使用错误的 shell 运行,但我很迷茫。
请指教。 谢谢
【问题讨论】:
你的脚本是否包含windows风格的\r\n
行尾?
检查\r\n
和cat -vet myScript.sh
。如果您在行尾看到^M
s,请使用dos2unix myScript.sh
清理它们。祝你好运。
遇到该问题的正常方法是:VAR_NAME="/home/MAXCR/extract"; if [ ! -f "$VARNAME/MYDOMAIN.sql" ]; then …; fi
,您可能会注意到,变量名称不匹配([
中的变量名称未设置)。你确定你没有遇到这个问题吗?
@shellter dos2unix
似乎不再存在于野外。 :( 现代 Linux 发行版似乎有一个名为 tofrodos
的软件包,它安装程序 fromdos
(这是 OP 需要的)和 todos
。
实际上我确实找到了 1 个 EOL 格式错误的文件。我能够使用 Notepad++ 修复它。感谢您的帮助!
【参考方案1】:
实际上,我确实找到了 1 个 EOL 格式错误的文件。我能够使用 Notepad++ 修复它。谢谢你的帮助! – STondreau
【讨论】:
以上是关于文件行在执行时被改变的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 C 中的命令行在 Xcode 中执行和编译程序以及可执行文件在哪里?