免费注册 查看新帖 |

Chinaunix

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

给bash初学者的小礼物  关闭 [复制链接]

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-03-02 15:53 |只看该作者 |正序浏览
给bash初学者的小礼物
一些bash编程中常犯的错误,来自abs-guide
注意!!!!这里面的例子全部是错误的!!!

=====变量使用=====
1.将bash保留字符串定义为变量名/变量名中含有保留字符


  1. case=123 #case是保留字串
  2. ca((=123 #((是保留字符
  3. var-1=123 #-是保留字符,用var_1好了
复制代码


2.变量用数字开头
  1. 12var=123
复制代码


3.变量与函数定义重名


  1. do_something ()
  2. {
  3.   echo "This function does something with \"$1\"."
  4. }

  5. do_something=do_something

  6. do_something do_something
复制代码


4.变量赋值=两边有空格
  1. var1 = 123 # var1=123才行
复制代码


===============
=====比较[]=====
5.[]内缺少空格

  1. [$var -eq 5 ]
  2. [ $var=ab ]
复制代码

6.<>使用时不加\

  1. [ $var < ab ] #这时<>被解释为输出重定向,[ $var \< ab ]才对
复制代码

7.=\>\<与 -eq -gt -lt不分

  1. [ $var -eq 45.6 ] #=\>\<用来比较字串,而eq gt lt只能用来比较整数,注意是整数,不是数值
复制代码

=================
8.脚本的sha-bang中不能有非法字符,用dos/win中写的东西是以\r\n换行的,脚本第1行实际是 #!/bin/bash\r\n,而只有#!/bin/bash\n才是合法的

9.子shell中对变量的操作是不能传递给它的父shell

  1. var=123
  2. ( $var=456 )
  3. echo $var #结果是123而不是456
  4. echo 456|read var
  5. echo $var #结果还是123,管道是会发起子shell的
复制代码

论坛徽章:
0
57 [报告]
发表于 2008-06-05 14:17 |只看该作者
好东西,谢了。

论坛徽章:
0
56 [报告]
发表于 2008-05-04 10:28 |只看该作者
看过了,对于我这新手来说,真的是不错呀,谢谢分享

论坛徽章:
0
55 [报告]
发表于 2008-04-10 09:43 |只看该作者
学习了ing

论坛徽章:
0
54 [报告]
发表于 2008-04-09 15:39 |只看该作者
好文章啊~~很有用!学习了!

论坛徽章:
0
53 [报告]
发表于 2008-04-09 15:10 |只看该作者
记下一个~~

论坛徽章:
0
52 [报告]
发表于 2008-04-09 10:36 |只看该作者
感觉是万里长征,还没有迈出第一步

论坛徽章:
0
51 [报告]
发表于 2007-12-24 14:04 |只看该作者
学习

论坛徽章:
0
50 [报告]
发表于 2007-12-24 11:06 |只看该作者
呵呵,以前就看过了。
问问火兄,在比较两个字符串的时候你在判断if里是怎么写的?
例如  $a = Y  and  $b = Y   
        $a = Y or $b = Y
一直觉得我的写法太别扭。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
49 [报告]
发表于 2007-12-24 10:06 |只看该作者
原帖由 xinyv 于 2007-12-24 09:57 发表
在说说 [ [[ ( (( 的用法和区别吧。

精华区里有这方面的贴子
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP