【问题标题】:Unix System Command Exit CodeUnix 系统命令退出代码
【发布时间】:2019-01-26 11:40:23
【问题描述】:

我正在尝试使用 Unix 系统命令启动脚本,但收到以下错误消息。

sh: location/script.ksh: 没有这样的文件或目录

错误消息是预期的,但我不知道如何使系统命令退出失败。

我正在使用的代码如下,有人会碰巧知道我哪里出错了或者我错过了什么吗?

elif [ ${VAR} -gt 0 ]; then

**grep for string** |
awk -v job_text="${VAR2}" \
-v job_seq_no=0 \
'BEGIN { FS = ";" } ; \
{ command_pos=index($1,job_text)+length(job_text) } ;\
                      { job_seq_no++ } ; \
                      { system (substr($1,command_pos,length($1)-command_pos))}'

如果这是一个愚蠢的问题或不可能,我不是一个脚本编写者,很抱歉。

提前致谢!

卡梅隆

【问题讨论】:

  • 这远远不足以让任何人提供帮助。什么system 命令?您发布的代码中没有 system 命令。 location/script.ksh?!?!这是哪里来的?

标签: linux bash unix system


【解决方案1】:

您是否要退出脚本?您需要在 awk 中记下 system 的返回值,然后将其作为 awk 的退出状态报告给 shell。只需将系统返回的值存储在一个变量中,然后将该变量作为参数传递给退出。举个简单的例子,考虑:

$ cat a.sh
#!/bin/bash

if echo "$1" | awk '{r=system $0} END {exit r}'; then
        echo awk succeeded
else
        echo awk failed >&2
        exit 1
fi

$ ./a.sh false
awk failed
$ ./a.sh true
awk succeeded

如果你只想退出 awk,你可以使用

awk '{r=system (...); if (r!=0){exit r}}'

【讨论】:

  • 非常感谢William,使用这个“{r=system (...); if (r!=0){exit r}}”系统现在识别出退出代码应该是127并相应地失败。感谢您花时间回复!
猜你喜欢
  • 2013-09-14
  • 2012-03-24
  • 1970-01-01
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多