cp 的所有可能退出代码
Posted
技术标签:
【中文标题】cp 的所有可能退出代码【英文标题】:All possible exit codes for cp 【发布时间】:2014-05-10 09:41:53 【问题描述】:查看 cp 的手册页,我只发现当复制成功且没有错误时命令以 0 退出,并且在任何错误时都以大于 0 的数字退出。但是,我找不到有关映射到特定案例的特定退出代码的任何详细描述。是否有这样的描述,甚至是标准化的,还是每个 Unix/Linux 发行版针对不同的场景都有自己的退出代码集?
【问题讨论】:
99% 的 Unix 命令只使用 0 表示成功,1 表示失败,它们没有不同的代码来区分原因。具有特定退出代码的少数命令在其手册页中对其进行了描述。所以如果没有这个细节,你可以假设没有具体的代码。 有关这方面的示例,请参见grep
手册页。如果找到匹配项,则退出代码为0
,如果未找到匹配项,则为1
,如果发生错误,则为2
。
【参考方案1】:
这是cp
从coreutils-8.21
退出的方式:
exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);
只有 0 或 1。
【讨论】:
即使有更复杂的区别,它也只对这一个实现有效。如果它没有在任何标准中描述,它就不会以可移植的方式出现。【参考方案2】:在 Mac (10.12.5 (16F73)) 上,还有其他代码。例如:
Mac$ cp -W 1 2; echo $?
cp: illegal option -- W
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
64
【讨论】:
以上是关于cp 的所有可能退出代码的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 11 Beta 7 命令 PhaseScriptExecution 失败,退出代码非零([CP] Copy Pods Resources)
如果 errexit 打开,我如何运行可能失败的命令并获取其退出代码?