(这个本来是写在我TOM的blog上的。。。看看还行。。就放过来吧。。希望大家到我TOM的blog常转转http://blog.tom.com/monicc
)
很奇怪javaEye为什么没有Linux/Unix的圈子。。。。
前些天把工作辞了,准备找个做开发的。于是到招聘会现场了。。。。挤死了。。。。中国果然是最不缺的就是劳动力啊。。。。
还是看看吧。。。我估计我是不想继续再呆在山西了。。。还是先发上些简历吧。。。看来还是工作经验的问题啊。。。说实话。。。偶是07年毕业的。。。可以说工作经验不到一年(如果按照毕业了才算工作经验的话)。。。不过我觉得在学校做的合作项目也应该算是工作经验吧,那样的话可就是一年多了(项目是 JAVA B/S的商业项目,如果算上ASP的就不知道有多早了)。。毕竟也是商业项目。。。虽然后来不了了之。。。主要是揽项目的那个哥们儿不在那个地方干了,直接给他当了毕业设计了。。。晕倒。。。
还是趁现在在家。。老老实实的多学上会儿吧。。。。开始复习Linux的SHELL编程
前天华为打电话来了。。。不过听意思好像是觉得我的工作经验太少。。。。0755的是深圳。
关于Linux的SHELL编程,只是罗列要点了,看能记起来多少,以后再慢慢补充把。。。。
1、 关于声明:
所有的脚本最开始的时候加上的声明,其实就是在第一个注释#的后边加上!SHELL_name。比如说#!/bin/bash
还有就是最好要加上脚本的名称、内容、作者、日期、版本,反正就和写java一样。。不过没有所谓的生成Doc了。
2、 关于变量:
2.1声明变量
声明一个变量其实很简单:变量名字=值 就可以了(等号两边不能有空格)。
主要要注意的是如果你的值没有加引号,那么你所有的空格“ ” 要写成“ ”(可能是TOM Blog的问题,这里有个斜杠有可能会显示不出来,就是回车上边的斜杠,就像JAVA或者是C语言中的换行符前边要加斜杠一样,空格前边也要加)。
变量也可以使用变量名称=值 变量名称的方法来显示,比如MYPROGRAMPATH=$HOME/MyProgram就可以是/home/monicc/MyProgram
在这里要注意的是如果你用的是单引号'的话,你写成'$HOME/MyProram',那么实际上你的变量是$HOME/MyProgram,实际上是没有这个目录的。。。肯定会出错,至于双引号则没有这个问题。
2.2关于数组、数字、方法、的声明
声明的变量其实应该是一个字符串,所以你如果:
#!/bin/bash
a=2
b=3
c=$a+$b
echo $c
那么你就会很郁闷的发现输出的c的值竟然是"2+3"。。。。成了字符串。。。如果你真的要对数字进行相加呢?
只能用declare才行:
#!/bin/bash
declare -i a=2
declare -i b=3
declare -i c=$a+$b
echo $c
这样出来的结果才能是5
要注意的是:declare的参数有这么几个:
i定义整数integer(int)
a定义数组array
f定义方法(函数)function
r定义为只读(具体有什么用处不太清楚,以后补上)
x定义为通过环境输出变量(具体有什么用处不太清楚,以后补上)
2.3读入变量内容
这个其实很简单,在用read,这个在很多的时候都要用的。因为几乎任何的程序都是要求输入东西的。举个例子:比如说最简单的猜数字游戏。。。
3、 关于执行:
只要用sh命令就可以,比如sh SHELL_Program_file_name;或者直接给加上一个x的权限让他编程可执行文件:chmod +x SHELL_Program_file_name,然后直接./SHELL_Program_file_name就可以了。
4、 得到参数
这个其实是可以说Linux自定义的几个变量:$0、$1、$2、$3。。。$n
其中$0代表着脚本名称,剩下的$n就分别代表着第n个参数。。。。
还有就是$*是所有的参数
5、 几个比较重要的环境变量
$HOME 用户的主目录,一般是/home/user_name
$PATH 这个就不用说了吧。。。注意的是在Linux下PATH用:(冒号)来分隔,而不是分号(Windows下才是分号)
$HOSTNAME 主机名称
$LANG 顾名思义,语言和语言编码,要是安装Oracle中文实在老是出现"口口"的话,就把LANG改成en_US.UTF-8试试。。。。。
$PS1 提示符的样式
$PWD 当前目录
$USER 用户账号
$BASH BASH的程序路径
6、 逻辑判断
其实就是在if判断中的参数:
-f 是否为一个文件
-d 是否是一个目录
-e 是否存在
-r 是否可读
-w 是否可写
-x 是否可执行
-s 是否为非空文件
-nt 两个文件比较,前一个是否比后一个新
-ot 两个文件比较,前一个是否比后一个旧
-ef 两个文件比较,是否相同,或者是否链接文件
= 等于
!= 不等于
< 小于
> 大于
-eq 等于
-ne 不等于
-lt 小于
-gt 大于
-ge 大于等于
-le 小于等于
-z 是否为空字符串
-n 是否为非空字符串
&& 条件并
|| 条件或
! 条件非
7、 条件判断
7.1 if语句
if [ 逻辑判断 ];then
语句
elif [ 逻辑判断 ];then
语句
else
语句
fi
这个要注意的是:如果在逻辑判断中的变量是用read读取的,那么要是光写成$变量=“值”的样子是不行的,当在read的时候直接输入回车,那么逻辑判断就会变成 ="值",这个是会出错的 所以在逻辑判断中变量要加上引号。
7.2 case语句
case 变量(String类型的)in
结果)#<--这里只有后半个括号
语句;;#<--这里要有两个分号
结果)
语句;;
默认处理的语句;;#<--这个双分号可以省略不写。
esac
同样这里的变量最好也要加上引号。
还有,可以用或“|”来合并结果,也可以用"*"来匹配模糊结果(如Y*或者是N*),或者用[Yy] | [Yy][Ee][Ss]来匹配,这样的匹配可以限制允许出现的字符。
8、 循环判断
8.1 for循环
for((条件一; 条件二; 条件三))#<--这里是两层的括号。和C语言中的for循环同理
do
语句
done
8.2 for循环(二)
for 值 in 变量(变量值用空格分离,或者可以直接写成值1 值2 值3...的形式)#<--和for each循环同理
do
语句
done
8.3 until循环
until [ 逻辑判断 ]
do
语句
done
#直到逻辑判断为真时停止循环。
8.4 while循环
while [ 逻辑判断 ]
do
语句
done
#当逻辑判断为真时循环。
9、函数(方法)
先来一个最简单的:
函数名称(){
语句
}
调用的时候直接用函数名称就可以了。
默认所有的函数都是有返回值的,return 值,如果不写的话,就以最后一条语句的值来算。。。(好像很难懂得样子。。。)
10、break continue
基本上学过C语言的人都知道.....
11、 “.”
在SHELL脚本中执行命令
比如: . ./runProgram
12、eval
意思就是得到参数的值,好像有些笼统了:
a=10
x=a
b='$'$x
eval c='$'$x
echo "b=$b"
echo "c=$c"
运行以后:
b=$a
c=10
13、exit
退出码,其中0表示正常,1~125表示各种各样的错误。。。
14、printf
和C语言的使用方法一样,等同于echo -n ""(这个可能看SHELL的不同还不一样,不过bash都使用这个-n的)
15、trap
当得到信号的时候怎么办,具体的信号可以用trap -l来看。
使用方法:
trap command signal_name
比较常用的:
HUB 挂起,比如说断线
INT 中断,比如说Ctrl+C
QUIT 退出,比如说Ctrl+
ABRT 终止,执行错误等重大错误
ALRM 报警,超时
TERM 系统终止,比如说root要关机了
16、脚本调试
sh -nvx
其中:
-n 检查语法错误,不执行
-v 执行前先显示代码
-x 执行后显示用到的代码
17、图形化界面
其实就是dialog,基本上就是dialog --XXX parameters...的形式(两个横杠阿!)
其中,通用的有--clear(清屏)、--backtitle “parameter”(背景标题)、--title “title_name”(标题)
其他的有:(参数全部使用空格分离)
msgbox
参数:内容,widght,height
对话框,相当于Windows的警告窗口,只有一个OK按钮
infobox
参数:内容,widght,height
信息显示,相当于软件的关于(about),在图形环境下几乎不显示,只能用sleep强制的显示上一段时间了
textbox
参数:file,widght,height
先当于一个不能编辑的记事本或VIM,只能看
checklist
参数:内容,widght,height,(键,值,[ON]|[OFF]默认是否选择)对应的选项
显示的选项数复选框
radiolist
参数:内容,widght,height,显示的选项数,(键,值,[ON]|[OFF]默认是否选择)对应的选项
单选框
yesno
参数:内容,widght,height 是否的选择框
menu
参数:内容,widght,height,显示的菜单数,(键,值)对应的菜单
主菜单
inputbox
参数:内容,widght,height,显示的菜单数,输入框内的默认值
输入框
具体的我放在一个例子里了:(还有个猜数字没写,不过本来就是自己瞎乎写的。。。。)
分享到:
相关推荐
任务一:掌握Shell编程的基本特点。 任务二:掌握shell脚本的编写 任务三:应用Shell程序设计方法,能分析Shell程序结构;掌握Shell程序开发环境的使用;能根据Shell程序功能、安全管理方面的需求,设计Shell程序...
《跟老男孩学Linux运维:Shell编程实战》第四部分为第14章~第16章,着重讲解Shell脚本开发规范与编码习惯、Shell脚本的调试知识和技巧、Shell脚本开发环境的配置调整和优化等。《跟老男孩学Linux运维:Shell编程实战...
涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试与比较、if条件判断语句、Shell函数等...
深入浅出嵌入式Linux应用程序开发MP4视频. 嵌入式系统概述。 Linux系统体验。 shell编程基础-变量详解。 shell编程基础-语句详解。 shell编程基础-函数详解。 shell编程实例分析。 linux应用程序设计基础-GCC编译器...
用Linux/UNIX Shell编程语言设计系统监控程序.pdf
本文将在30分钟内让你快速理解Linux系统的基础知识,并学会编写简单的shell脚本程序。 首先,Linux系统的目录结构与Windows系统不同,它采用“根目录”“home目录”“等级目录”等组织方式。学习cd,ls,mkdir等命令可以...
涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试与比较、if条件判断语句、Shell函数等...
1.5 Linux下程序的开发环境和开发过程 1.6 习题 第2章 C编程基础、Vi和Emacs编辑器 2.1 C程序的结构 2.2 C语言的基本数据类型 2.2.1 整型 2.2.2 浮点型 2.2.3 字符型 2.3...
涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试与比较、if条件判断语句、Shell函数等...
涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试与比较、if条件判断语句、Shell函数等...
涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试与比较、if条件判断语句、Shell函数等...
涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试与比较、if条件判断语句、Shell函数等...
涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试与比较、if条件判断语句、Shell函数等...
二、服务器开发:需要学习Linux 程序设计和Linux 网络编程。 三、嵌入式Linux 应用程序:需要学习C 语言和基本的Linux 常识。 四、嵌入式Linux 驱动:除了需要学习“嵌入式Linux 应用程序”的知识以外,还需要了 ...
内容全面:涵盖Linux下C语言基础、开发工具、Linux系统机制和Shell编程等 讲解详细:对每个知识点都从原理、作用、语法、示例和技巧等多角度进行分析 贴近实际:对开发中经常用到的Linux进程操作、文件操作和...