免费注册 查看新帖 |

Chinaunix

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

[学习共享] 【大话IT】总结篇:你遇到过哪些shell陷阱? [复制链接]

论坛徽章:
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
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-03-30 11:10 |只看该作者 |倒序浏览
获奖公布:
精彩回复:本友会机友会摄友会   o枫叶o飘零   Forgaoqiang   Fl_wolf   799029078
请以上获奖人员在5月25日前将姓名、电话、邮箱、公司、职务、快递地址站短给hyukhae079408,以便尽快给大家发放礼品。


话题背景:   
不管哪种编程语言, 总会有某些写法会被人认为这是编程语言本身的陷阱, 或者说是个坑,因为它貌似不符合人们的常规认知, 或者说我们想当然的认为应该是这么做的.
   

今天我们就Linux shell脚本语言来探讨下其所谓的”陷阱”.
   

我们先来看一张动图, 我们遍历一个目录下的mp3文件,然而结果跟我们想象中的却不一样!



    看到这个图, 你有想过, 单纯的这样写

for i in $(ls *.mp3); do
    some command $i
done

是错的, 或者说是不严谨的吗?

再比如:



#!/bin/bash

count=0

seq 5 | while read line; do
    ((count++))
    echo "count=$count"
done

echo "End:count=$count"

为什么最后 count 的值压根没变?

更多类似的"坑", 请仔细阅读: http://mywiki.wooledge.org/BashPitfalls, 个人认为这些都是非常经典的"坑", 然后再来探讨下我们的问题.


讨论问题:

1. 你认为这些真的是shell语言的"陷阱"吗?还是说这只是我们对语言了解的不够深入?
2. 在编码的过程中, 你是否注意编码的相关细节(比如引号), 以及考虑过代码的兼容性,严谨性以及健壮性?
3. 最重要的一点, 你从这些所谓的"陷阱"中学到了哪些知识点?
4. 你还遇到过其他你认为是"坑"的坑吗?


活动时间: 3月30日-4月30日


活动奖励:
活动结束后,我们将会选取5个精彩回复,送创意镜头水杯一个。





DTCC 2017 来啦!

随着云计算和大数据时代的来临,数据正在以前所未有的速度成为各个领域价值创造的核心驱动力。

在此背景下,国内最受关注的数据库技术盛会——2017第八届中国数据库技术大会(DTCC2017)将于2017年5月11-13日如约而至。本届大会以“数据驱动•价值发现”为主题,汇集来自互联网、电子商务、金融、电信、政府、行业协会等20多个领域的120多位技术专家,共同探讨Oracle、MySQL、NoSQL、云端数据库、智能数据平台、区块链、数据可视化、深度学习等领域的前瞻性热点话题与技术。大会共设定2大主场和20个技术专场,将吸引5000多名IT人士参会,为数据库人群、大数据从业人员、广大互联网人士及行业相关人士提供最具价值的交流平台。




官网链接:http://dtcc.it168.com/
购票链接:http://dtcc.it168.com/goupiao.html

欢迎扫码关注DTCC官方微信,获取最新信息!




论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2016-10-26 16:19:04
2 [报告]
发表于 2017-03-30 11:34 |只看该作者
顶,六神,

论坛徽章:
0
3 [报告]
发表于 2017-03-30 11:55 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
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 [报告]
发表于 2017-03-30 14:04 |只看该作者
回复 3# 本友会机友会摄友会

你这都回复的啥呀这是..

论坛徽章:
39
双子座
日期:2014-08-06 17:37:19极客徽章
日期:2016-12-07 14:03:402017金鸡报晓
日期:2017-01-10 15:13:292017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之新疆
日期:2017-03-24 16:36:1915-16赛季CBA联赛之江苏
日期:2017-04-26 17:19:08黑曼巴
日期:2018-03-07 18:56:5615-16赛季CBA联赛之八一
日期:2018-03-09 10:44:1015-16赛季CBA联赛之江苏
日期:2018-03-12 15:12:1915-16赛季CBA联赛之青岛
日期:2018-03-16 09:13:0515-16赛季CBA联赛之山东
日期:2018-04-27 18:23:0515-16赛季CBA联赛之新疆
日期:2018-05-04 11:29:30
5 [报告]
发表于 2017-03-30 14:06 |只看该作者
本帖最后由 o枫叶o飘零 于 2017-04-17 16:00 编辑

先占坑  

1. 你认为这些真的是shell语言的"陷阱"吗?还是说这只是我们对语言了解的不够深入?
对于大部分人来说算是"陷阱",因为一般我们一般写shell就直接拿来就写,或者从网上剽窃shell代码。
其实说到底,我们还是没有对这门语言深入的了解,并没有去通读手册。总觉得这门语言是很简单,拿来就能用。

2. 在编码的过程中, 你是否注意编码的相关细节(比如引号), 以及考虑过代码的兼容性,严谨性以及健壮性?
在一开始没有注意细节,到后面发现,shell比其它语言的细节要变态得多。(例如单双引号、空格、选项顺序、文件自身编码问题等等....)

3. 最重要的一点, 你从这些所谓的"陷阱"中学到了哪些知识点?
学到了不少,比如文本编码等等
最主要的是学到了现在虚拟机上测试,并且还进一步增加了排错的exp

4. 你还遇到过其他你认为是"坑"的坑吗?
遇到过几点:
1.在windows下编写shell脚本,然后传到linux无法运行,后来知道用cat -A 查看了有windows的字符才明白了其中的问题
2.shell中的通配符和正则容易混淆
3.空格问题,这有点忧桑.  你说shell空格严格呢,有时确实很严格,说不严格呢,有时又不严格。例如在代码缩进这一块,shell是不用遵循严格的缩进的。而语法就必须严格把控空格(例如定义变量a='xxx' (等号2边不能有空格),又例如expr 1 + 1  (符号和数字中间有空格)))。

论坛徽章:
11
CU十二周年纪念徽章
日期:2013-10-24 15:41:342015年辞旧岁徽章
日期:2015-03-03 16:54:15丑牛
日期:2015-01-14 10:36:40技术图书徽章
日期:2015-01-12 15:46:11白羊座
日期:2014-11-14 09:35:36狮子座
日期:2014-10-30 13:18:49巳蛇
日期:2014-10-11 12:52:08子鼠
日期:2014-09-28 14:11:06双鱼座
日期:2014-04-22 13:05:48午马
日期:2014-02-11 17:58:002015年迎新春徽章
日期:2015-03-04 09:55:28
6 [报告]
发表于 2017-03-30 14:07 |只看该作者
顶你个肺!威武,支持!

论坛徽章:
3
15-16赛季CBA联赛之北控
日期:2016-06-06 21:01:08程序设计版块每日发帖之星
日期:2016-06-19 06:20:00程序设计版块每日发帖之星
日期:2016-07-17 06:20:00
7 [报告]
发表于 2017-03-30 14:12 |只看该作者
顶你个肺,前排先占个坑,后面列队摆好姿势!

论坛徽章:
1
辰龙
日期:2014-12-17 15:54:35
8 [报告]
发表于 2017-03-30 14:16 |只看该作者

顶你个肺!威武,支持!

论坛徽章:
0
9 [报告]
发表于 2017-03-30 14:30 |只看该作者
支持一下。我觉得基本都让某楼说了不少。
然后,每个语言都有所谓的缺陷,因为没有最好,只有最合适,所以才有那么多种语言。
然后,对于新手来说,很多小问题都是所谓的陷阱,其实还是不懂或不严谨而已,自己写东西的习惯严谨了,就不会有那么多坑。

论坛徽章:
5
CU十四周年纪念徽章
日期:2016-06-30 00:03:1415-16赛季CBA联赛之天津
日期:2016-12-27 16:24:1415-16赛季CBA联赛之辽宁
日期:2017-03-14 15:38:3515-16赛季CBA联赛之江苏
日期:2017-03-14 17:09:4815-16赛季CBA联赛之青岛
日期:2017-04-04 16:15:48
10 [报告]
发表于 2017-03-30 14:40 |只看该作者

顶你!威武,支持!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP