免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3993 | 回复: 8
打印 上一主题 下一主题

[数值计算] read 命令如何实现超时后使用默认值 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-08-07 17:13 |只看该作者 |倒序浏览
希望能给 read 后面的参数一个默认值,如果用户超时无输入,则以默认值来执行后续命令,如何做呢?

我先给变量赋了个初始值,但发现超时之后,变量给清空为空了:(

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
2 [报告]
发表于 2015-08-07 17:17 |只看该作者
回复 1# feibob


    检查 read 的返回值呀

论坛徽章:
0
3 [报告]
发表于 2015-08-07 17:21 |只看该作者
回复 2# MMMIX


俺是希望在命令中就实现了:(   

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
4 [报告]
发表于 2015-08-07 17:42 |只看该作者
回复 3# feibob


    那你把你用的 shell 改一把吧

论坛徽章:
22
处女座
日期:2014-10-11 13:33:292015亚冠之塔什干火车头
日期:2015-07-20 19:59:042015亚冠之塔什干火车头
日期:2015-07-26 10:59:31程序设计版块每日发帖之星
日期:2015-08-05 06:20:00每日论坛发贴之星
日期:2015-08-05 06:20:00程序设计版块每日发帖之星
日期:2015-08-07 06:20:00每日论坛发贴之星
日期:2015-08-07 06:20:002015亚冠之阿尔纳斯尔
日期:2015-10-01 15:23:28白银圣斗士
日期:2015-12-07 17:17:06操作系统版块每日发帖之星
日期:2015-12-27 06:20:002015亚冠之广州富力
日期:2015-07-08 15:48:31程序设计版块每日发帖之星
日期:2015-06-11 22:20:00
5 [报告]
发表于 2015-08-07 19:28 |只看该作者
[root@www test]# cat test.sh
#!/bin/bash

read -t 5 -p "请输入一个数:" num
num=${num:-0}

echo "输入的数是$num"


[root@www test]# sh test.sh
请输入一个数:输入的数是0
[root@www test]# sh test.sh
请输入一个数:1
输入的数是1

评分

参与人数 1可用积分 +10 收起 理由
MMMIX + 10 赞一个!

查看全部评分

论坛徽章:
0
6 [报告]
发表于 2015-08-09 13:41 |只看该作者
回复 5# 聆雨淋夜


    谢谢,测试可用:)

 想请教一下,这个应该是类似C语言中?运算符的用法,但为什么要在 ${num:-0} 中要加"-"号呢?

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
7 [报告]
发表于 2015-08-09 16:20 |只看该作者
回复 6# feibob


    这是 bash 的语法呀

论坛徽章:
22
处女座
日期:2014-10-11 13:33:292015亚冠之塔什干火车头
日期:2015-07-20 19:59:042015亚冠之塔什干火车头
日期:2015-07-26 10:59:31程序设计版块每日发帖之星
日期:2015-08-05 06:20:00每日论坛发贴之星
日期:2015-08-05 06:20:00程序设计版块每日发帖之星
日期:2015-08-07 06:20:00每日论坛发贴之星
日期:2015-08-07 06:20:002015亚冠之阿尔纳斯尔
日期:2015-10-01 15:23:28白银圣斗士
日期:2015-12-07 17:17:06操作系统版块每日发帖之星
日期:2015-12-27 06:20:002015亚冠之广州富力
日期:2015-07-08 15:48:31程序设计版块每日发帖之星
日期:2015-06-11 22:20:00
8 [报告]
发表于 2015-08-09 22:22 |只看该作者
本帖最后由 聆雨淋夜 于 2015-08-09 22:22 编辑

回复 6# feibob

表达式        含义
${var}        变量var的值, 与$var相同
         
${var-DEFAULT}        如果var没有被声明, 那么就以$DEFAULT作为其值 *
${var:-DEFAULT}        如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 *
         
${var=DEFAULT}        如果var没有被声明, 那么就以$DEFAULT作为其值 *
${var:=DEFAULT}        如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 *
         
${var+OTHER}        如果var声明了, 那么其值就是$OTHER, 否则就为null字符串
${var:+OTHER}        如果var被设置了, 那么其值就是$OTHER, 否则就为null字符串
         
${var?ERR_MSG}        如果var没被声明, 那么就打印$ERR_MSG *
${var:?ERR_MSG}        如果var没被设置, 那么就打印$ERR_MSG *
         
${!varprefix*}        匹配之前所有以varprefix开头进行声明的变量
${!varprefix@}        匹配之前所有以varprefix开头进行声明的变量

   

论坛徽章:
0
9 [报告]
发表于 2015-08-11 11:38 |只看该作者
回复 8# 聆雨淋夜


    非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP