无法跟踪错误

无法跟踪错误

运行我的程序时,我发现以下错误

today.ksh[36]: test: 0403-004 Specify a parameter with this command.
sed: 0602-419 Cannot find or open file /home/tmp/filename.
today.ksh[37]: test: 0403-004 Specify a parameter with this command.
today.ksh[24]: test: 0403-021 A ] character is missing.

但我无法理解以下内容的含义:

  • sed:0602-419 0602-419 是什么意思?
  • Today.ksh[37] 37 表示什么?和测试:0403-004是什么意思?

    简而言之,数字范围如“测试:0403-004”显示的含义是什么?在 ksh 中调试时它有何用处?

答案1

欢迎来到 AIX。

IBM 操作系统中普遍存在的一个想法是系统消息都具有识别字母数字代码。这些消息可能会被翻译成不同的语言,但代码保持不变。作为 IBM 文档的一部分,通常会有一份参考手册,人们可以通过其中的代码查找这些消息。

在 OS/2 和 OS/400 上,代码采用三个字母的形式设施指示符和四位数字留言号码。 (OS/2 用户将记住诸如、 以及使用和命令SYS0002在命令行查找这些代码的能力。)在 AIX 上,它们采用四位操作系统的形式helphelpmsg成分数字和一个三位数留言号码

所以 0403-004 不是一个“范围”。它是一个消息代码,对应于组件编号 0403 消息编号 004。组件 0403 是 Korn Shell。组件 0602 是一组 UNIX 文本编辑工具:viexedsedawk

是的,AIX 有一本很大的参考手册,列出了所有这些代码。

然而,这并不完全是详细的在其对消息的处理中。 (相比之下,OS/2 帮助工具对SYS命令行中看到的大多数消息都有详细的描述和操作。)因此:

  • 0403-004:您很可能忘记在变量扩展周围加引号,导致变量未设置时扩展为空,从而导致命令语法错误test
  • 0403-021:当作为 调用时[,该命令要求最后一个参数是]。通常,此错误是由于忘记将最终]字符单独作为一个单词而导致的。

进一步阅读

相关内容