随笔分类 -  shell编程

摘要:declare或typeset内建命令(它们是完全相同的)可以用来限定变量的属性.这是在某些编程语言中使用的定义类型不严格的方式。命令declare是bash版本2之后才有的。命令typeset也可以在ksh脚本中运行。declare/typeset 选项-r只读 1declare -r var1(declare -r var1与readonly var1作用相同)这大致和C的const限定词相同.一个试图改变只读变量值的操作将会引起错误信息而失败.-i整数 1declare -i number 2# 脚本余下的部分会把"number"当作整数看待. 3 4number=3 阅读全文
posted @ 2011-04-22 13:55 fhefh 阅读(53648) 评论(4) 推荐(1)
摘要:linux bash shell之变量替换::=句法、=句法、:-句法、-句法、=?句法、?句法、:+句法、+句法变量替换和变量默认值设置是紧密相关的,至少从概念出发是如此。参数扩张是将类似于变量的参数用它的值来替换。例如以“echo $VAR”的形式调用一个简单的变量。此外还有更多的特性可以访问。这个句法还包含一些没有扩展的特性,虽然这些特性自身很有意义。首先,这类特性执行默认变量赋值。使用这些特性时,整个表达式需要用花括号括起来。: ${VAR:=”some default”}这些代码开始的冒号是一个正确执行非活动任务的shell命令。在这个句法中,它仅仅扩展了行中紧随其后的所有参数。本例 阅读全文
posted @ 2011-04-22 12:12 fhefh 阅读(40088) 评论(3) 推荐(4)
摘要:摘抄自:ABS_CN 当要引用一个变量的值时,一般推荐使用双引号。使用双引号除了变量名[2]前缀($)、后引符(`)和转义符(\)外,会使shell不再解释引号中其它所有的特殊字符。[3]用双引号时$仍被当成特殊字符,允许引用一个被双引号引起的变量("$variable"), 那也是说$variable会被它的值所代替。用双引号还能使句子不被分割开.[4]一个参数用双引号引起来能使它被看做一个单元,这样即使参数里面包含有空白字符也不会被shell分割开了。 1variable1="a variable containing five words" 2CO 阅读全文
posted @ 2011-04-21 21:21 fhefh 阅读(31764) 评论(2) 推荐(2)
摘要:转载自:http://blog.csdn.net/fox_lht/archive/2010/10/19/5950790.aspx当我还在布鲁克大学上学的时候,Macquarium实验室中充满了苹果公司的Macintosh Plus电脑。一天,我在为第三年的操作系统课程准备一个程序。我的一个小程序报告没有错误,当我运行它时,黑白色的桌面上出现了竖条,我的软盘被退出来了,计算机然后从新启动。经过更仔细的检查,我意识到我在if语句中使用了不正确的判断符号“=”,应该是“==”。这个小错误导致了不可以预见的结果,从那时起,我将C语言当做一个有精神病的室友,我们可以一起生活、一起工作,但是只要你一不注意 阅读全文
posted @ 2011-04-17 21:05 fhefh 阅读(3075) 评论(0) 推荐(0)
摘要:转载自:http://blog.csdn.net/fox_lht/archive/2010/09/20/5897336.aspx7.复合命令除了最简单的脚本,你很少想要执行每一个命令。执行一组命令或者重复执行一组命令若干次比执行单个命令更加有助。复合命令是将命令封装在一组其他命令中。从可读性来说,封装后的命令使用缩进格式将会使复合命令的代码清晰并便于阅读。管理员曾经抱怨过我的缩进比标准的缩进少了一个空格(我必须使用尺子在屏幕上测量才能确定此事),我认为这不是什么问题,但是他说,当输入0时,它的程序会崩溃。复合命令总是有两个命令组成。命令的结束符是该命令相反拼写顺序,就像使用括号将命令括住了。例 阅读全文
posted @ 2011-04-17 21:04 fhefh 阅读(2057) 评论(0) 推荐(1)
摘要:转载自:http://blog.csdn.net/fox_lht/archive/2010/09/19/5894940.aspx6.表达式表达式是一个计算公式,通过它可以得出一个值。Bash有几个内置的命令和函数是计算表达式,它们不是所有的都有相同的语法或特性。有时相同的表达式有不止一种的计算方法。还有一些指定的特性用于罕见的情形下。很少有编程人员记住所有的这些细小的差别。在一次我和教授兼作家E Ray Skilton先生的对话中,我们讨论了下拉菜单是用于对命令做出选择而不是对记忆的辅助。他从他的Atari计算面前转过头来问我:“你是否因为学习了太多的计算机语言而开始忘记一些命令的语法了?”。 阅读全文
posted @ 2011-04-17 21:03 fhefh 阅读(3314) 评论(0) 推荐(0)
摘要:1.使用bash --version查看bash的版本2.去http://ftp.gnu.org/gnu/bash/下载bash3.安装bash: 将下载的bash文件放入到某个文件夹,然后进行解压: tar zxvf bash-x.x.tar.gz x.x为版本号码 cd bash-x.x ./configure make make install 阅读全文
posted @ 2011-04-16 19:38 fhefh 阅读(5579) 评论(0) 推荐(0)
摘要:C NameValueDescriptionEPERM1Operation not permittedENOENT2No such file or directoryESRCH3No such processEINTR4Interrupted system callEIO5I/O errorENXIO6No such device or addressE2BIG7Arg list too longENOEXEC8Exec format errorEBADF9Bad file numberECHILD10No child processesEAGAIN11Try againENOMEM12Out 阅读全文
posted @ 2011-04-16 16:13 fhefh 阅读(39982) 评论(0) 推荐(1)
摘要:转载自:http://dev.firnow.com/course/3_program/shell/shelljs/20090828/172746.htmlbash下有很多像{}、[]等一些符号命令,下面是我对一些常用的符号命令的学习笔记,若有错误或纰漏望各位兄弟指正。一、.(source).(点)与source命令一样,从文件中读取并执行命令,无论该文件是否都有可执行权限都能够正确的执行。且是在当前shell下执行,而不是产生一个子shell来执行(我们通常使用“./filename.sh”去执行一个文件是在当前shell下产生一个子shell去执行的)。所以在设置bash的环境的变量时,就必 阅读全文
posted @ 2011-04-16 11:38 fhefh 阅读(5647) 评论(0) 推荐(1)
摘要:清除/var/log下的log文件基本版:1 # Cleanup 2 # 当然要使用 root 身份来运行这个脚本 3 4 cd /var/log 5 cat /dev/null > messages 6 cat /dev/null > wtmp 7 echo "Logs cleaned up." 版本2: 1 #!/bin/bash 2 # 一个 Bash 脚本的正确的开头部分. 3 4 # Cleanup, 版本 2 5 6 # 当然要使用 root 身份来运行. 7 # 在此处插入代码,来打印错误消息,并且在不是 root 身份的时候退出. 8 9 LOG 阅读全文
posted @ 2011-04-16 09:24 fhefh 阅读(741) 评论(0) 推荐(0)
摘要:摘抄自:ABS_Guide 译者 杨春敏 黄毅什么时候不使用 Shell 脚本? 资源密集型的任务,尤其在需要考虑效率时(比如,排序,hash 等等)需要处理大任务的数学操作,尤其是浮点运算,精确运算,或者复杂的算术运算(这种情况一般使用 C++或 FORTRAN 来处理) 有跨平台移植需求(一般使用 C 或 Java)复杂的应用,在必须使用结构化编程的时候(需要变量的类型检查,函数原型,等等) 对于影响系统全局性的关键任务应用。 对于安全有很高要求的任务,比如你需要一个健壮的系统来防止入侵,破解,恶意破坏等等,项目由连串的依赖的各个部分组成。需要大规模的文件操作 需要多维数组的支持 需要数据 阅读全文
posted @ 2011-04-16 09:10 fhefh 阅读(1215) 评论(0) 推荐(0)
摘要:摘抄自:ABS_GUIDE下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdflinux中shell变量$#,$@,$0,$1,$2的含义解释:变量说明:$$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定的Flag一览$*所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。$@所有参数列表。如"$@"用「"」括起来的情况、以&qu 阅读全文
posted @ 2011-04-15 23:02 fhefh 阅读(326175) 评论(8) 推荐(18)
摘要:for循环示例for循环语法:for VARIABLE in 1 2 3 4 5 .. Ndo command1 command2 commandNdone#!/bin/bashfor i in 1 2 3 4 5doecho "Welcome $i times"donebash version 3.0+版本#!/bin/bash for i in {1..5}do echo "Welcome $i times"donebash version 4版本#!/bin/bashecho "Bash version ${BASH_VERSION}.. 阅读全文
posted @ 2011-04-15 15:32 fhefh 阅读(59371) 评论(0) 推荐(1)
摘要:编写代码在计划好要程序干什么以及如何使用程序的使用变得更加简单易学之后,程序员就必须以计算机能够理解的方式把他的想法记录下来,告诉计算机他想干什么。这就是要用到的所谓的代码。一般按照如下顺序组织自己的思维:1. 决定让计算机做哪些任务2. 确定计算机执行任务的顺序3. 从shell脚本语言中选择适当的命令来执行那些任务4. 用linux文本编辑器编辑一个shell脚本,并按任务的执行顺序来组织命令关于编程的几个术语输送给计算机的单一一条指令称之为命令——command集合在一起的多个命令称之为代码——code为了完成某项任务而组织在一起的所有指令统称为程序——programLinux中bash 阅读全文
posted @ 2011-04-13 16:14 fhefh 阅读(18421) 评论(0) 推荐(2)