Unix系统命令退出代码

时间:2018-08-20 10:48:06

标签: linux bash unix system

我正在尝试使用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))}'

我不是很多脚本编写者,所以很抱歉这是一个愚蠢的问题还是无法解决。

提前谢谢!

Cameron

1 个答案:

答案 0 :(得分:1)

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

<receiver
     android:name=".services.receiver.StartUpdateReceiver"
     android:enabled="true"
     android:exported="true"
     android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
     <intent-filter android:priority="1000">
         <action android:name="android.intent.action.BOOT_COMPLETED" />
     </intent-filter>
</receiver>

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

$ 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