You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAP命令行系统脚本执行报xsltproc找不到及couc变量赋值异常问题

问题原因

所有异常的核心诱因是脚本使用了Windows系统的CRLF(\r\n)换行符,而非Unix/Linux环境要求的LF(\n)换行符,行尾残留的\r不可见字符导致所有执行逻辑异常:

  • 变量赋值异常:couc=date +%y%m%d`` 实际得到的变量值为[日期]\r,尾部的\r会让输出时光标回到行首,导致变量值输出看起来异常;同时你脚本存在笔误,echo "&couc" 中的&应该改为$才会输出变量值,否则只会输出固定字符串&couc。
  • 输出格式错乱:你看到的file2单独占一行、=开头的内容占下一行,就是echo "file2=$file2"输出时尾部\r导致的光标跳转效果。
  • xsltproc报错:脚本中xsltproc命令传入的XML文件路径末尾被带上了\r字符,系统会尝试查找名称末尾带不可见字符的文件,自然匹配不到已存在的正常文件,所以报加载实体失败的错误。
  • 「command not found」报错:部分行的\r字符会把单行命令拆分为多行,拆分出来的内容被系统识别为不存在的无效命令,就会触发该报错。
解决方案
  1. 转换脚本换行符格式
    如果系统安装了dos2unix工具,直接执行:
    dos2unix /usr/sap/trans/command/myscript.sh
    没有dos2unix的话用sed命令也可以完成转换:
    sed -i 's/\r$//' /usr/sap/trans/command/myscript.sh
  2. 修正脚本笔误
    把脚本中的echo "&couc"改为echo "$couc",即可正常输出couc变量的值。
  3. 可选优化配置
    在脚本第一行添加shebang声明#!/bin/bash,然后给脚本加执行权限:
    chmod +x /usr/sap/trans/command/myscript.sh
    后续可以直接用绝对路径/usr/sap/trans/command/myscript.sh调用脚本,无需每次前缀sh/bash。

修改完成后重新执行脚本即可恢复正常。

内容的提问来源于stack exchange,提问作者Eric Koralewski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 23:27:02