【发布时间】:2017-03-28 11:02:52
【问题描述】:
我编写了一个简单的 shell 脚本来检查 xml 文件是否存在,如果存在,则将旧 xml 文件重命名为备份,然后将新 xml 文件移动到旧 xml 文件的存储位置。
#!/bin/sh
oldFile="/Documents/sampleFolder/sampleFile.xml"
newFile="/Documents/sampleFile.xml"
backupFileName="/Documents/sampleFolder/sampleFile2.backup"
oldFileLocation="/Documents/sampleFolder"
if [ -f "$newFile" ] ; then
echo "File found"
#Rename old file
mv $oldFile $backupFileName
#move new file to old file's location
mv $newFile $oldFileLocation
else
echo "File not found, do nothing"
fi
但是,每次我尝试运行脚本时,都会收到 4 个未找到命令的消息和语法错误:文件意外结束。关于为什么我得到这些命令未找到错误或文件意外结束的任何建议?我仔细检查了我是否关闭了所有双引号,我有代码突出显示:)
编辑: 运行脚本的输出:
: command not found:
: command not found:
: command not found1:
: command not found6:
replaceXML.sh: line 26: syntax error: unexpected end of file
【问题讨论】:
-
你能发布确切的错误信息吗?我认为您的代码没有任何问题。
-
这在这里工作(使用 bash 和破折号)。但是您可能应该将
mv上使用的每个变量放在双引号之间。 -
您的脚本可能有 DOS 行结尾。
-
学习打开shell调试,这样你就可以看到正在执行的内容。
set -vx。祝你好运。 -
可能是这样,我在 windows 中创建了 shell 脚本,然后将其复制到我在 VMWare 播放器中的 ubuntu 实例中进行测试。我确实创建了另一个空的 shell 脚本,复制了这些东西,错误就消失了。现在它没有找到文件,但这是另一个问题:)