免费注册 查看新帖 |

Chinaunix

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

[其他] Shell中关于变量的一个有趣测试 [复制链接]

论坛徽章:
9
金牛座
日期:2013-10-25 20:32:26NBA常规赛纪念章
日期:2015-05-04 22:32:032015年迎新春徽章
日期:2015-03-04 10:01:44白羊座
日期:2014-09-14 21:39:32白羊座
日期:2014-08-22 23:19:57巨蟹座
日期:2014-02-10 18:04:56酉鸡
日期:2013-12-26 12:10:45丑牛
日期:2013-12-04 23:56:47青铜圣斗士
日期:2015-11-22 00:04:38
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-26 17:50 |只看该作者 |倒序浏览

System : CentOS 6.5 x86_64
Shell     : Bash 4.1.2

众里寻他千百度, 蓦然回首, 那人却在, 灯火阑珊处...
  1. # A1=123
  2. # A2=234
  3. # A3=345

  4. # TEST=${A3-A2-A1}
  5. # echo $TEST
  6. 345

  7. # TEST=${A4-A2-A1}
  8. # echo $TEST
  9. A2-A1

  10. # TEST=${A4-A2}
  11. # echo $TEST
  12. A2

  13. # TEST=${A4-${A2}}
  14. # echo $TEST
  15. 234

  16. # TEST=${A4-${A2}-${A1}}
  17. # echo $TEST            
  18. 234-123

  19. # TEST=${A4-${A5}-${A1}}
  20. # echo $TEST            
  21. -123

  22. # TEST=${A4-${A5}${A1}}
  23. # echo $TEST           
  24. 123

  25. # TEST=${A4-${A5}${A1}{A2}}
  26. # echo $TEST               
  27. 123{A2}

  28. # TEST=${A4-${A5}${A1}${A2}}
  29. # echo $TEST               
  30. 123234

  31. # TEST=${A4-${A5-A1}}      
  32. # echo $TEST         
  33. A1

  34. # TEST=${A4-${A5-${A1}}}
  35. # echo $TEST            
  36. 123

  37. # TEST=${A4-${A5-${A6-${A3}}}}
  38. # echo $TEST                  
  39. 345
复制代码

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [报告]
发表于 2014-03-26 17:59 |只看该作者
回复 1# TaxKiz

http://bbs.chinaunix.net/forum-24-1.html
Shell版新手导航    Shell基础二十篇    Shell十三问    Shell综合水平测试    Linux相关书籍    Shell版精华帖合集    Shell索引树

Shell十三问 http://bbs.chinaunix.net/thread-218853-1-1.html
   
8) $(( )) 與 $( ) 還有${ } 差在哪? (2008-10-30 02:20 最後更新)
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=218853&page=7#pid1617953

论坛徽章:
9
金牛座
日期:2013-10-25 20:32:26NBA常规赛纪念章
日期:2015-05-04 22:32:032015年迎新春徽章
日期:2015-03-04 10:01:44白羊座
日期:2014-09-14 21:39:32白羊座
日期:2014-08-22 23:19:57巨蟹座
日期:2014-02-10 18:04:56酉鸡
日期:2013-12-26 12:10:45丑牛
日期:2013-12-04 23:56:47青铜圣斗士
日期:2015-11-22 00:04:38
3 [报告]
发表于 2014-03-26 18:04 |只看该作者
回复 2# jason680


   

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
4 [报告]
发表于 2014-03-26 18:25 |只看该作者
回复 3# TaxKiz



其实,精华就是一句话:

利用 ${ } 還可針對不同的變數狀態賦值(沒設定、空值、非空值):
${file-my.file.txt} :假如 $file 沒有設定,則使用 my.file.txt 作傳回值。(空值及非空值時不作處理)


----

  楼主你被误导了吧..

其实只会看第一个变量是否有定义.

TEST=${A3-A2-A1}

因为A3在前面定义了,为345,非控制,所以后面的A2-A1不作处理,直接返回 345.

同理,下面的一样的啦

论坛徽章:
9
金牛座
日期:2013-10-25 20:32:26NBA常规赛纪念章
日期:2015-05-04 22:32:032015年迎新春徽章
日期:2015-03-04 10:01:44白羊座
日期:2014-09-14 21:39:32白羊座
日期:2014-08-22 23:19:57巨蟹座
日期:2014-02-10 18:04:56酉鸡
日期:2013-12-26 12:10:45丑牛
日期:2013-12-04 23:56:47青铜圣斗士
日期:2015-11-22 00:04:38
5 [报告]
发表于 2014-03-26 18:38 |只看该作者
回复 4# reyleon

也不是

我觉得有趣, 是因为最后的这个
  1. # TEST=${A4-${A5-${A6-${A3}}}}
  2. # echo $TEST                  
  3. 345
复制代码
如果 A4 存在, 则 TEST 的值为 A4 的值, 如果 A4 这个不存在, 则 TEST 的值为 A5 的值, 如果 A5 不存在, 则为 A6 的值, 直到 A3, A3 存在, 则 TEST 的值为 A3 的值.

这样可以一直嵌套下去, 直到自己想要的结果, 可以省去很多判断的步骤.

所以才觉得有趣.

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
6 [报告]
发表于 2014-03-26 20:27 |只看该作者
回复 5# TaxKiz


    额 这样,哈哈 学习了. 貌似还真是

论坛徽章:
9
金牛座
日期:2013-10-25 20:32:26NBA常规赛纪念章
日期:2015-05-04 22:32:032015年迎新春徽章
日期:2015-03-04 10:01:44白羊座
日期:2014-09-14 21:39:32白羊座
日期:2014-08-22 23:19:57巨蟹座
日期:2014-02-10 18:04:56酉鸡
日期:2013-12-26 12:10:45丑牛
日期:2013-12-04 23:56:47青铜圣斗士
日期:2015-11-22 00:04:38
7 [报告]
发表于 2014-03-26 21:29 |只看该作者
本帖最后由 TaxKiz 于 2014-03-26 21:30 编辑

回复 6# reyleon


   

    一步一步的推, 推到最后, 就是这个结果... 如果没有前面的那个测试, 也不会有最后的这个结果. 所以才变的有趣.

论坛徽章:
3
水瓶座
日期:2014-03-25 17:08:042015亚冠之塔什干棉农
日期:2015-08-10 10:45:122015亚冠之萨济拖拉机
日期:2015-08-13 16:05:24
8 [报告]
发表于 2014-03-27 10:23 |只看该作者
回复 1# TaxKiz


    建议楼主看看十三问

论坛徽章:
3
水瓶座
日期:2014-02-20 12:02:14天蝎座
日期:2014-03-19 14:04:46水瓶座
日期:2014-07-26 20:01:02
9 [报告]
发表于 2014-03-28 14:10 |只看该作者
回复 5# TaxKiz


    get  这个很有趣
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP