我正在尝试使用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
答案 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