首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SIGINT SIGQUIT Bash脚本

SIGINT SIGQUIT Bash脚本
EN

Stack Overflow用户
提问于 2017-01-04 14:21:48
回答 1查看 161关注 0票数 0

我需要编写一个具有以下行为的脚本:

  • 如果脚本接收到信号SIGINT,则脚本将计数器的值递增1,并将其值打印到标准输出。
  • 如果它接收到信号SIGQUIT,那么它将计数器的值减少一个,并将其值输出到标准输出。
  • 如果计数器的当前值小于-5或大于+5,则程序终止。
代码语言:javascript
复制
#!/bin/bash 
count=0
while [  $count -lt -5 ] && [ $count -gt 5 ];  do
    sleep 1
trap 'count=$(expr $count + 1)' SIGINT
echo $count
trap count=$(expr $count - 1) SIGQUIT
echo $count
done

我写了这段代码,但我不知道我做错了什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-04 14:34:37

您可以在代码开始时设置陷阱,以确保尽早创建它们(更重要的是,不需要每次通过循环重新设置它们)。另外,expr对于在shell中执行算术来说是过时的,而是使用算术表达式。

但是,最大的问题是,count永远不能同时小于-5和大于5;您需要交换比较。

代码语言:javascript
复制
trap 'count=$((count + 1))' SIGINT
trap 'count=$((count - 1))' SIGQUIT

count=0
# Loop will enter at least once, since -5 < 0 < 5
while [ "$count" -gt -5 ] && [ "$count" -lt 5 ]; do
    sleep 1
    echo "$count"
done
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41466096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档