127 Return code from $?
返回值127的含义是什么? 在UNIX中。
当在
通常它意味着:
127 - 找不到命令
但它也可能意味着找到命令,
但找不到该命令所需的库。
例如:$ caat
错误消息将
庆典:
caat: command not found
现在你使用
shell约定是一个成功的可执行文件应该以值0退出。任何其他东西都可以解释为某种类型的失败,部分是bash或刚运行的可执行文件。另请参阅bash手册页的$ PIPESTATUS和EXIT STATUS部分:
1
2
3 For the shell’s purposes, a command which exits with a zero exit status has succeeded. An exit status
of zero indicates success. A non-zero exit status indicates failure. When a command terminates on a
fatal signal N, bash uses the value of 128+N as the exit status.
1 2 3 4 5 6 7 8 9 10 11 | If a command is not found, the child process created to execute it returns a status of 127. If a com- mand is found but is not executable, the return status is 126. If a command fails because of an error during expansion or redirection, the exit status is greater than zero. Shell builtin commands return a status of 0 (true) if successful, and non-zero (false) if an error occurs while they execute. All builtins return an exit status of 2 to indicate incorrect usage. Bash itself returns the exit status of the last command executed, unless a syntax error occurs, in which case it exits with a non-zero value. See also the exit builtin command below. |
它没有特殊意义,除了退出的最后一个进程,退出状态为127。
但是,它也被bash使用(假设您使用bash作为shell)告诉您无法执行您尝试执行的命令(即无法找到它)。遗憾的是,如果进程以状态127退出,或者如果找不到,则不能立即进行推理。
编辑:
除了控制台上的输出外,不能立即导出,但这是堆栈溢出,所以我假设你在脚本中这样做。
如果您尝试使用脚本语言运行程序,则可能需要包含脚本语言的完整路径和要执行的文件。例如:
1 | exec('/usr/local/bin/node /usr/local/lib/node_modules/uglifycss/uglifycss in.css > out.css'); |
如果IBM大型机JCL在调用unix脚本名称的末尾有一些额外的字符或数字,那么它可能会抛出这样的错误。
这个错误有时也是骗人的。即使文件确实存在,也说找不到文件。可能是因为文件中存在无效的不可读特殊字符,这些特殊字符可能是由您正在使用的编辑器引起的。在这种情况下,此链接可能会帮助您。
-bash:./ my_script:/ bin / bash ^ M:错误的解释器:没有这样的文件或目录
找出是否是这个问题的最好方法是简单地在整个文件中放置一个echo语句,并验证是否抛出了相同的错误。