`
mncc
  • 浏览: 54087 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Linux下的程序开发:基础SHELL编程

阅读更多

(这个本来是写在我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,显示的菜单数,输入框内的默认值
输入框

 

具体的我放在一个例子里了:(还有个猜数字没写,不过本来就是自己瞎乎写的。。。。)

  • TestDialog4.zip (1.3 KB)
  • 描述: LINUX下SHELL(bash)图形界面编程的例子,希望大家多捧场
  • 下载次数: 5
1
2
分享到:
评论

相关推荐

    西南科大+Linux实验报告+shell程序开发

    1. **Shell编程基础**:理解Shell编程的基本特点,包括其命令行接口、命令组合以及脚本编写。 2. **脚本编写**:通过编写简单的到复杂的Shell脚本,掌握如何利用Shell语言进行程序设计。 3. **程序设计与分析**:...

    Linux Shell 小程序 :Coral Shell

    Linux Shell小程序,如"Coral Shell",是专为Unix-like操作系统设计的一种命令行解释器,由Alex Wang开发。这类程序通常用C语言编写,因为C语言具有高效、底层操作能力强的特点,非常适合构建与操作系统内核交互的...

    跟老男孩学Linux运维:Shell编程实战

    《跟老男孩学Linux运维:Shell编程实战》第四部分为第14章~第16章,着重讲解Shell脚本开发规范与编码习惯、Shell脚本的调试知识和技巧、Shell脚本开发环境的配置调整和优化等。《跟老男孩学Linux运维:Shell编程实战...

    模拟shell编程

    模拟shell编程 _shell 编程是操作系统课程设计的重要组成部分,旨在实现简单的shell命令,并学习计算机软件技术,特别是计算机操作系统技术。_ Shell 编程的概念和原理: Shell 术语最普通的解释就是:用户用来...

    跟老男孩学Linux运维:Shell编程实战 part3

    涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试与比较、if条件判断语句、Shell函数等...

    Linux Shell编程实验

    Linux Shell编程实验旨在让学生深入理解Shell的作用和主要分类,熟悉Bash的基本语法规则,并通过实践来编写简单的Shell脚本。Shell是Linux操作系统中的一个重要组件,它作为用户与系统交互的接口,负责解释用户输入...

    linux下shell编程实验报告-考勤系统

    ### Linux 下 Shell 编程实验报告 - 考勤系统 #### 实验目的 通过本实验,学生将能够深入理解 Shell 程序的设计方法,包括但不限于如何编写、运行及调试 Shell 脚本。此外,学生还将学习如何利用 Shell 脚本来模拟...

    用Linux/UNIX Shell编程语言设计系统监控程序.pdf

    "Linux/UNIX Shell编程语言设计系统监控程序.pdf" 本文档主要介绍了使用Linux/UNIX Shell编程语言设计系统监控程序的方法。该程序使用Shell编程语言设计CGI脚本,通过使用过滤器awk在某些输出行中提取信息,然后在...

    linux shell 编程1

    在这个主题中,我们将深入探讨Linux命令行基础以及Shell编程的相关知识。 首先,让我们从Linux命令行开始。在Linux环境中,用户与操作系统交互主要通过命令行接口(CLI),它提供了简洁、高效的命令来执行各种任务...

    Linux应用程序开发详解

    它旨在帮助读者从零开始,逐步掌握在Linux环境下进行应用程序开发的各种技术和工具。书中的内容涵盖了从基础的Linux操作系统知识到高级的程序设计技巧,同时也包括了对ARM体系结构的简介,为嵌入式系统开发打下坚实...

    掌握Linux编程核心:Shell脚本与工具使用指南

    本资源《Linux下编程工具(shell脚本)》为您揭开Linux环境下编程的神秘面纱,从基础的文件结构到复杂的脚本编写,一网打尽! Linux环境开发概述:快速了解Linux开发环境的搭建与配置,为高效编程打下坚实基础。 ...

    深入浅出嵌入式Linux应用程序开发MP4视频.zip

    深入浅出嵌入式Linux应用程序开发MP4视频. 嵌入式系统概述。 Linux系统体验。 shell编程基础-变量详解。 shell编程基础-语句详解。 shell编程基础-函数详解。 shell编程实例分析。 linux应用程序设计基础-GCC编译器...

    Linux的shell编程

    Linux的shell编程是操作系统与用户交互的重要方式,它是一个用C语言编写的程序,作为用户与Linux内核之间的桥梁。shell既是命令语言,用于交互式地执行用户输入的命令,也是一种程序设计语言,具备高级语言的控制...

    LINUX原理及应用:第9章 shell编程.ppt

    【Linux原理及应用:第9章 Shell编程】 Shell编程在Linux操作系统中占据着核心地位,即使在图形化用户界面普及的今天,它依然是系统管理员...因此,了解和掌握Shell编程是Linux系统管理和开发人员不可或缺的技能之一。

    Linux——shell编程基础

    ### Linux Shell 编程基础知识详解 #### 一、Shell 概述 - **Shell 定义**:在 Linux 或 Unix 系统中,Shell 是一个命令行解释器,它接收用户的命令并将其发送给操作系统内核。Shell 既是用户与操作系统交互的接口...

Global site tag (gtag.js) - Google Analytics