【发布时间】:2012-07-20 16:53:42
【问题描述】:
我必须编写一个 shell 脚本,但我不知道该怎么做。 基本上我必须编写一个脚本来找到一个文件(它可能会以不同的方式命名)。如果任一文件存在,则必须执行,如果返回 0(无错误),则应继续构建,如果不等于 0(返回错误),则应退出。如果没有找到任何一个文件,它应该继续构建。
我必须找到的文件可以是 file.1 或 file.2,因此它可以命名为 (file.1) 或 (file.2)。
一些条件使它更清楚。 1)如果任何一个文件存在,它应该执行 - 如果它有任何错误它应该退出,如果没有错误它应该继续。 2)不存在,如果是这种情况,那么它应该继续构建。 3) 两个文件不会同时出现(附加信息)
我曾尝试编写一个脚本,但我怀疑它是否更接近我正在寻找的内容。
if [-f /home/(file.1) 或 (file.2)] 然后 -exec /home/(file.1) 或 (file.2) 如果 [ $! -eq 0];然后 echo "没有错误继续构建" 菲 别的 如果 [ $! -ne 0] ;然后 出口 ; 菲 别的 echo "/home/(file.1) 或 (file.2) 未找到,继续构建" 菲非常感谢任何帮助。
提前致谢
【问题讨论】:
-
如何执行 XML 文件?
-
所以澄清一下,这是正确的:当且仅当(1)两者都不存在,或者(2)其中至少一个存在并且在运行时成功?
-
Ray,文件可以退出,甚至没有一个可以退出。 (两者不会同时出现)。 1)我想找到该文件,如果存在则应该执行。2)如果执行时有任何错误,则应退出,3)如果执行时没有错误,则不应退出,4)如果没有文件现在它不应该退出。
-
有四种情况需要考虑:(1) 两个文件都找到,(2) 和(3) 找到其中一个文件,(4) 两个文件都没有找到。您的描述没有清楚地(在我看来)说明在情况(1)和(4)中该怎么做。在编程时,您确实必须考虑所有类似的可能性,并确保您知道在每种情况下您将要做什么。此外,Unix 上的“查找文件”通常意味着“运行
find命令来定位文件”。尚不完全清楚,但从您的示例代码中,您似乎知道这两个文件的位置,如果它们在任何地方找到的话。 -
@JonathanLeffler 1) 两个文件不会同时出现,4) 如果两个文件都没有找到,它应该继续,而不是退出。我希望它很清楚