仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1067|回复: 12
打印 上一主题 下一主题

[其他Linux] Linux教程之Bash编程易犯的毛病(四)仓酷云

[复制链接]
透明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:25:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在linux中学习命令的最好办法是学习Shell脚本编程,Shell脚本比起其他语言来学习简单,但是功能却十分强大.通过学习Shell编程,能让你掌握大量的linux命令。
36.[-n$foo]or[-z$foo]

这个例子中,$foo没有效引号引发来,当$foo包括空格大概$foo为空时城市出成绩:
  1. $foo="someword"&&[-n$foo]&&echoyes-bash:[:some:binaryoperatorexpected$foo=""&&[-n$foo]&&echoyesyes
复制代码
准确的写法是:
  1. [-n"$foo"][-z"$foo"][-n"$(somecommandwitha"$file"init)"][[-n$foo]][[-z$foo]]
复制代码
37.[[-e"$broken_symlink"]]returns1eventhough$broken_symlinkexists

这里-e选项是看文件是不是存在,当紧跟的文件是一个软链接时,它不看软链接是不是存在,而是看实践指向的文件是不是存在。以是当软链接破坏时,即实践指向的文件被删除后,-e的了局前往1。
以是假如你的确要判别前面的文件是不是存在,准确的写法是:
  1. [[-e"$broken_symlink"||-L"$broken_symlink"]]
复制代码
38.edfile<<<"g/d{0,3}/s//e/g"fails

ed命令利用的正则语法,不撑持0次呈现次数,上面的就能够一般事情:
  1. edfile<<<"g/d{1,3}/s//e/g"
复制代码
略过,如今很少会有人用ed命令吧。
39.exprsub-stringfailsfor"match"

上面的例子多半情形下运转不会有成绩:
  1. word=abcdeexpr"$word":".(.*)"bcde
复制代码
可是当$work不巧恰好是match时,就有大概堕落了(MACOSX下的expr命令不撑持match,以是仍然能一般事情):
  1. word=matchexpr"$word":".(.*)"
复制代码
缘故原由是match是expr命令内里的一个特别关头字,针对GNU体系,办理办法是在后面加一个+:
  1. word=matchexpr+"$word":".(.*)"atch
复制代码
+号可让expr命令疏忽后续token的特别寄义。
别的一个倡议是,不要再利用expr命令了,expr能做的事变都能够用Bash原生撑持的参数睁开(ParameterExpansion)大概字符串睁开(SubstringExpansion)来完成。而且不异情形下,内置的功效一定比内部命令的效力要高。
下面的例子,目标是为了删除单词中的首字符,能够如许做:
  1. $word=match$echo"${word#?}"#PEatch$echo"${word:1}"#SEatch
复制代码
40.OnUTF-8andByte-OrderMarks(BOM)

多半情形下,UNIX下UTF-8范例的文本不必要利用BOM,文本的编码是依据以后言语情况,MIME范例大概别的文件元数据信息断定的。工资浏览时,不会由于在文件入手下手处加BOM标志而腚影响,可是当文件要被剧本注释实行时,BOM标志会像MS-DOS下的换行符(^M)一样奇异。
41.content=$(<file)

这里没有甚么毛病,不外你要晓得命令交换会删除开头过剩的换行符。
略过,原文给的优化办法必要Bash4.2+以上的版本,手头没有如许的情况。
42.somecmd2>&1>>logfile

这是一个很罕见的毛病,明显你原本是想将尺度输入与尺度毛病输入都重定向到文件logfile中,可是你会惊奇地发明,尺度毛病仍然输入到屏幕中。

系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo、pswho
精灵巫婆 该用户已被删除
沙发
发表于 2015-1-21 06:07:58 | 只看该作者
我是学习嵌入式方向的,这学期就选修了这门专业任选课。
山那边是海 该用户已被删除
板凳
发表于 2015-1-23 08:10:31 | 只看该作者
随着IT从业人员越来越多,理论上会有更多的人使用Linux,可以肯定,Linux在以后这多时间不会消失。
老尸 该用户已被删除
地板
发表于 2015-1-26 22:09:07 | 只看该作者
随着IT从业人员越来越多,理论上会有更多的人使用Linux,可以肯定,Linux在以后这多时间不会消失。
小女巫 该用户已被删除
5#
发表于 2015-2-4 20:54:04 | 只看该作者
不同于Windows?系统需要花钱购买,因为Linux的核心是免费的,自由使用的,核心源代码是开放的。
谁可相欹 该用户已被删除
6#
发表于 2015-2-6 19:37:41 | 只看该作者
写学习日记,这是学习历程的见证,同时我坚持认为是增强学习信念的法宝。
变相怪杰 该用户已被删除
7#
发表于 2015-2-11 04:53:48 | 只看该作者
这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。
简单生活 该用户已被删除
8#
发表于 2015-2-28 15:12:11 | 只看该作者
学习Linux应具备的。[书籍+网络资源]
愤怒的大鸟 该用户已被删除
9#
发表于 2015-2-28 20:49:25 | 只看该作者
主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%问题都可在此解决。
深爱那片海 该用户已被删除
10#
发表于 2015-3-10 07:57:28 | 只看该作者
当然你不需搭建所有服务,可以慢慢来。自己多动手,不要非等着别人帮你解决问题。
透明 该用户已被删除
11#
 楼主| 发表于 2015-3-11 17:02:18 | 只看该作者
一些显而易见的小错误还是用vi改正比较方便。以后的大一点的程序就得在Linux下调试了,因为有的头文件在VC里面说找不到。?
冷月葬花魂 该用户已被删除
12#
发表于 2015-3-19 01:56:58 | 只看该作者
就这样,我们一边上OS理论课,一边上这个实验,这样挺互补的,老师讲课,一步一步地布置任务
海妖 该用户已被删除
13#
发表于 2015-3-26 23:54:14 | 只看该作者
Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-14 17:24

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表