(这个本来是写在我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,显示的菜单数,输入框内的默认值
输入框
具体的我放在一个例子里了:(还有个猜数字没写,不过本来就是自己瞎乎写的。。。。)
分享到:
相关推荐
1. **Shell编程基础**:理解Shell编程的基本特点,包括其命令行接口、命令组合以及脚本编写。 2. **脚本编写**:通过编写简单的到复杂的Shell脚本,掌握如何利用Shell语言进行程序设计。 3. **程序设计与分析**:...
Linux Shell小程序,如"Coral Shell",是专为Unix-like操作系统设计的一种命令行解释器,由Alex Wang开发。这类程序通常用C语言编写,因为C语言具有高效、底层操作能力强的特点,非常适合构建与操作系统内核交互的...
《跟老男孩学Linux运维:Shell编程实战》第四部分为第14章~第16章,着重讲解Shell脚本开发规范与编码习惯、Shell脚本的调试知识和技巧、Shell脚本开发环境的配置调整和优化等。《跟老男孩学Linux运维:Shell编程实战...
模拟shell编程 _shell 编程是操作系统课程设计的重要组成部分,旨在实现简单的shell命令,并学习计算机软件技术,特别是计算机操作系统技术。_ Shell 编程的概念和原理: Shell 术语最普通的解释就是:用户用来...
涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试与比较、if条件判断语句、Shell函数等...
Linux Shell编程实验旨在让学生深入理解Shell的作用和主要分类,熟悉Bash的基本语法规则,并通过实践来编写简单的Shell脚本。Shell是Linux操作系统中的一个重要组件,它作为用户与系统交互的接口,负责解释用户输入...
### Linux 下 Shell 编程实验报告 - 考勤系统 #### 实验目的 通过本实验,学生将能够深入理解 Shell 程序的设计方法,包括但不限于如何编写、运行及调试 Shell 脚本。此外,学生还将学习如何利用 Shell 脚本来模拟...
"Linux/UNIX Shell编程语言设计系统监控程序.pdf" 本文档主要介绍了使用Linux/UNIX Shell编程语言设计系统监控程序的方法。该程序使用Shell编程语言设计CGI脚本,通过使用过滤器awk在某些输出行中提取信息,然后在...
在这个主题中,我们将深入探讨Linux命令行基础以及Shell编程的相关知识。 首先,让我们从Linux命令行开始。在Linux环境中,用户与操作系统交互主要通过命令行接口(CLI),它提供了简洁、高效的命令来执行各种任务...
它旨在帮助读者从零开始,逐步掌握在Linux环境下进行应用程序开发的各种技术和工具。书中的内容涵盖了从基础的Linux操作系统知识到高级的程序设计技巧,同时也包括了对ARM体系结构的简介,为嵌入式系统开发打下坚实...
本资源《Linux下编程工具(shell脚本)》为您揭开Linux环境下编程的神秘面纱,从基础的文件结构到复杂的脚本编写,一网打尽! Linux环境开发概述:快速了解Linux开发环境的搭建与配置,为高效编程打下坚实基础。 ...
深入浅出嵌入式Linux应用程序开发MP4视频. 嵌入式系统概述。 Linux系统体验。 shell编程基础-变量详解。 shell编程基础-语句详解。 shell编程基础-函数详解。 shell编程实例分析。 linux应用程序设计基础-GCC编译器...
通过以上知识点的概述,可以看出《Linux与Unix Shell编程指南》涵盖了从基础到高级的 shell 编程知识。无论是初学者还是有一定经验的用户,都可以从中受益,进一步提升自己在 Linux/Unix 系统下的编程能力。
Linux的shell编程是操作系统与用户交互的重要方式,它是一个用C语言编写的程序,作为用户与Linux内核之间的桥梁。shell既是命令语言,用于交互式地执行用户输入的命令,也是一种程序设计语言,具备高级语言的控制...
【Linux原理及应用:第9章 Shell编程】 Shell编程在Linux操作系统中占据着核心地位,即使在图形化用户界面普及的今天,它依然是系统管理员...因此,了解和掌握Shell编程是Linux系统管理和开发人员不可或缺的技能之一。