bash 脚本“退出代码 126”时出错

2022-09-03 05:07:57

我想将CPD(复制粘贴检测)集成到我的iOS项目中。我在这里这里读到了它。

要在代码中自动确定 CopyPaste,我使用的是 bash 脚本:

echo "Checking files in ${SOURCE_ROOT}"
JARS_DIR=${PROJECT_DIR}/CPD
FULL_PATH_TO_CPD_XML_OUTPUT=${PROJECT_DIR}/cpd-output.xml

# Running CPD
java -classpath "${JARS_DIR}/ObjCLanguage-0.0.5-SNAPSHOT.jar:${JARS_DIR}/pmd.jar" net.sourceforge.pmd.cpd.CPD --minimum-tokens 100 --files "${SOURCE_ROOT}" -v --language ObjectiveC --encoding UTF-8 --format net.sourceforge.pmd.cpd.XMLRenderer > "${FULL_PATH_TO_CPD_XML_OUTPUT}"

# Running self :)
${BUILT_PRODUCTS_DIR} -cpd-xml "${FULL_PATH_TO_CPD_XML_OUTPUT}"

该代码创建 cpd 输出.xml文件。但是在编译时给我一个错误“命令/bin/sh失败,退出代码为126”。以下是日志副本 http://pastebin.com/359k1Wni 我从此示例项目中获取代码 错误正在进行,然后我注释此字符串:

${BUILT_PRODUCTS_DIR} -cpd-xml "${FULL_PATH_TO_CPD_XML_OUTPUT}"

我试图找到有关此错误的任何信息,但只发现了其中一些没有答案的问题。我对 bash 脚本一无所知。我会很高兴得到任何建议。感谢您的关注。

附言:以下脚本的作者写道:

为了集成 XCode 和 CPD,我们将在项目“运行脚本阶段”目标中添加“运行脚本阶段”,该阶段通常由几个部分组成:实际调用 cpd 解析 cpd 输出.xml以“正确的格式”输出


答案 1

126 表示“命令不可执行”

# Running self :)
${BUILT_PRODUCTS_DIR} -cpd-xml "${FULL_PATH_TO_CPD_XML_OUTPUT}"

它看起来像$BUILT_产品_DIR}是不可执行的 你能用这个var的值更新吗


答案 2

该错误也可能是由于运行命令行管理程序的“权限”不足而引起的。我得到了:-
在修复shell脚本的权限时,问题得到了解决。 bash: /home/XXX.sh: Permission denied exit-status: 126


推荐