免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 38263 | 回复: 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
发表于 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
发表于 2005-03-02 16:59 |显示全部楼层

给bash初学者的小礼物

支持

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2005-03-02 17:00 |显示全部楼层

给bash初学者的小礼物

学习! :=)

论坛徽章:
0
发表于 2005-03-02 18:37 |显示全部楼层

给bash初学者的小礼物

i=$i+1
请问为什么要写成i=` expr $i+1 1 `

expr是什么意思

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2005-03-02 18:42 |显示全部楼层

给bash初学者的小礼物

原帖由 "speed_fj" 发表:
i=$i+1
请问为什么要写成i=` expr $i+1 1 `

expr是什么意思

expr是一个对整数进行运算的函数,man expr

论坛徽章:
0
发表于 2005-03-02 19:05 |显示全部楼层

给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
发表于 2005-03-02 19:42 |显示全部楼层

给bash初学者的小礼物

[quote]原帖由 "寂寞烈火"]学习! :=)[/quote 发表:

你可以毕业了

论坛徽章:
0
发表于 2005-03-02 23:15 |显示全部楼层

给bash初学者的小礼物

学习ing

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
发表于 2005-03-02 23:26 |显示全部楼层

给bash初学者的小礼物

[quote]原帖由 "icesummit"]学习ing[/quote 发表:

你可以毕业了  

论坛徽章:
0
发表于 2005-03-03 10:21 |显示全部楼层

给bash初学者的小礼物

建议尽量用括号,  (( i=i+1 ))
这样可以提高效率.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP