在 build.sh 的 set_options 函数中,--sign-script 选项直接使用 $2 而没有先调用 require_option_value 校验:
build.sh
set_options
--sign-script
$2
require_option_value
--sign-script) CUSTOM_SIGN_SCRIPT="$(realpath $2)" shift 2 ;;
对比同文件中其他需要值的选项(如 --cache、--cann_path、--changed_file 等),都会先调用 require_option_value "$1" "$2" 来确保 $2 存在且不是另一个选项(不以 - 开头)。
--cache
--cann_path
--changed_file
require_option_value "$1" "$2"
-
如果用户漏掉了 --sign-script 的参数值,例如 bash build.sh --pkg --sign-script,那么:
bash build.sh --pkg --sign-script
realpath
shift 2
CUSTOM_SIGN_SCRIPT
建议增加 require_option_value 校验,与其他选项保持一致:
--sign-script) require_option_value "$1" "$2" CUSTOM_SIGN_SCRIPT="$(realpath $2)" shift 2 ;;
另外,如果 $2 指向的文件不存在,realpath 也会报错。可以考虑在 realpath 后增加文件存在性检查。
你好,已收到该问题,待分析确认后修复
在
build.sh的set_options函数中,--sign-script选项直接使用$2而没有先调用require_option_value校验:--sign-script) CUSTOM_SIGN_SCRIPT="$(realpath $2)" shift 2 ;;对比同文件中其他需要值的选项(如
--cache、--cann_path、--changed_file等),都会先调用require_option_value "$1" "$2"来确保$2存在且不是另一个选项(不以-开头)。如果用户漏掉了
--sign-script的参数值,例如bash build.sh --pkg --sign-script,那么:$2为空,realpath会报错或读取 stdin(取决于 realpath 实现)shift 2会跳过下一个参数,可能导致后续参数解析混乱CUSTOM_SIGN_SCRIPT会被设为空字符串或错误值,构建过程中可能产生难以定位的问题建议增加
require_option_value校验,与其他选项保持一致:--sign-script) require_option_value "$1" "$2" CUSTOM_SIGN_SCRIPT="$(realpath $2)" shift 2 ;;另外,如果
$2指向的文件不存在,realpath也会报错。可以考虑在realpath后增加文件存在性检查。