shell编程

linux下bash脚本语法

﹥>﹥吖頭↗ 提交于 2020-01-12 16:47:01
1、shell中的变量定义和引用 (1)变量定义和初始化。shell是弱类型语言(语言中的变量如果有明确的类型则属于强类型语言;变量没有明确类型就是弱类型语言),和C语言不同。在shell编程中定义变量不需要制定类型,也没有类型这个概念。 (2)变量定义时可以初始化,使用=进行初始化赋值。在shell中赋值的=两边是不能有空格的。 注意:shell对语法非常在意,非常严格。很多地方空格都是必须没有或者必须有,而且不能随意有没有空格。 (3)变量赋值,变量定义后可以再次赋值,新的赋值会覆盖老的赋值。shell中并不刻意区分变量的定义和赋值,反正每个变量就是一个符号,这个符号的值就是最后一个给他赋值时的值。 (4)变量引用。shell中引用一个变量必须使用$符号,$符号就是变量解引用符号。 注意:$符号后面跟一个字符串,这个字符串就会被当作变量去解析。如果这个字符串本身没有定义,执行时并不会报错,而是把这个变量解析为空。也就是说在shell中没有被定义的变量其实就相当于是一个定义并赋值为空的变量。 注意:变量引用的时候可以$var,也可以${var}。这两种的区别是在某些情况下只能用${var}而不能简单的$var 2、shell中无引用、单引号和双引号的区别 (1)shell中使用字符串可以不加双引号,直接使用。而且有空格时也可以,但是缺陷是不能输出"或者其他转义字符。 (2

shell基础

╄→гoц情女王★ 提交于 2020-01-12 14:02:25
shell脚本基础 1)什么是脚本:一个可以执行的文件,运行可以带来某种功能 2)规范shell脚本组成 #!环境声明 //默认/bin/bash #注释文本 可执行代码 3)管道传递 | 4)屏幕输出文本的类别 标准输出(1):命令行执行正常的显示结果 标准错误(2):命令行执行出错或异常时的显示结果 5)重定向输出 > //将前面命令的正确输出进行重定向 2> //将前面命令的错误输出进行重定向 &> //将前面命令的正确和错误输出进行重定向 1>&2 //同 >&2 , 将命令行的标准输出编程标准错误 6)单引号 ’ ’ //取消所有特殊字符的含义 变量: 以不变的名称存放可能会变化的值 变量名=变量值 1)方便以固定名称重复使用某个值 2)提高对任务需求运行环境变化的适应能力 read 1)产生交互 2)记录输入 3)将输入赋值给一个变量 // read 变量名 read -p '屏幕输出信息' 变量 //用于给出提示符 定义/赋值变量注意事项 若指定变量名已存在,相当于为变量重新赋值 等号两边没有空格 变量由字母 /数字/下划线组成,区分大小写 不能以数字开头 引用变量 $变量名 ${变量名} 条件测试 [ 测试表达式 ] 常用的测试选项: ! //反义 [ ! -f /etc/passwd ] 1) 检查文件状态: -e //存在为真 -d //存在且是目录为真 -f

shell编程之函数定义及使用

不羁岁月 提交于 2020-01-12 07:40:59
一.函数定义 #!/bin/sh #func1.sh hello() ##函数定义 {   echo "Hello there today's date is 'date +%Y-%m-%d' "   #return 2 ###返回值其实是状态码,只能在[0-255]范围内 } echo "now going to the function hello" hello #echo $? 获取函数的return值 echo "back from the function" 函数调用:function hello() 或 function hello 或 hello 注意:1.必须在调用函数地方之前,先声明函数,shell脚本是逐行运行,不会像其它语言一样先预 编译    2.函数返回值,只能通过$?系统变量获得,可以显示加:return返回,如果不加,将以最后 一条命令运行结果,作为返回值。return后跟数值n(0-255) 脚本高度:sh-vx helloWorld.sh或者在脚本中增加set -x 二.函数参数 #!/bin/bash #fun1.sh funWithParam(){   echo "第一个参数为 $1!"   echo "第二个参数为 $2!"   echo "第十个参数为 $10!"   echo "第十个参数为 ${10}!"   echo "第十一个参数为

Eclipse Rcp系列 http://www.blogjava.net/dreamstone/archive/2007/02/08/98706.html

微笑、不失礼 提交于 2020-01-11 23:00:49
Eclise Rcp 系列一 第一个SWT程序 写在开始: 由于工作须要,做了一周时间的Rcp开发,发现由于Eclipse开发方面的中文资料较少,对入门者来说有些困难, 所以把自己一周的内容放上,共享给开始学习Eclipse开发的人 Eclipse开发中有很多名词: 插件开发 ,RCP ,SWT,Jface很容易让人迷糊 做个大概的比喻,如果说SWT是C++的话 那么JFace就像STL对SWT做了简单的封装 Rcp就像MFC封装更多 而插件开发和Rcp唯一不同就使导出不同,一个导出成plug in,另一个导出成独立运行的程序。其实没有什么区别 好了,开始第一个程序,从Hello world开始。写到这个地方,再次崇拜一下第一个写Hello world的人。 真应改给他搬个什么普及教育之类的奖项。 import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; public class HelloSWT { public static void main(String[] args) { Display display = new Display();

SHELL脚本编程生产案例

拈花ヽ惹草 提交于 2020-01-11 22:38:42
Shell脚本编程 基础 编写脚本 backup.sh,可实现每日将/etc/目录备份/backup/etcYYYY-mm-dd中 #!/bin/bash cp -av /etc/ /data/etc\ ` date +%F ` 编写脚本 hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问” #!/bin/bash ping -w3 -c3 $1 & > /dev/null && echo "该IP地址可访问" || echo "该IP地址不可访问" 编写脚本 checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满 #!/bin/bash CHECKDISK = ` ( df ; df -i ) | egrep "^/dev/sda" | tr -s ' ' % | cut -d '%' -f5 | sort -nr | head -1 ` [ $CHECKDISK -gt 80 ] & > /dev/null && echo "磁盘空间或节点编号空间已达到80%" | mail -s "空间已满" root 编写脚本 per.sh,判断当前用户对指定参数文件,是否不可读并且不可写 #!/bin/bash [ !

linux shell 基础语法B

岁酱吖の 提交于 2020-01-10 18:39:26
接着之前的内容继续讲shell编程的基础。 这部分还是先要巩固重定向的使用,以及创建自己的文件描述符,在编写shell脚本中关注临时重定向和永久重定向的用法。 (1)< << (2)> >> 为了区分如上的重定向符号,大家搞懂以下2个例子就行: cat > file <<eof; cat >> fileA <fileB 实际使用中输入重定向还是比较少,多数是输出重定向 &> 表示stdout和stderr都重定向 对于文件描述符,我们不光要掌握0,1,2,还要能够自己创建自己的文件描述符,且在shell编程中与默认的标准文件描述符进行组合使用。比如说要恢复文件描述符就是一个例子。 exec 3 >&1 exec 1> testfile ... ... exec 1>&3 ... ... 以上是输出重定向的恢复,输入重定向如下 exec 6 <&0 exec 0 <filein ... exec 0 <&6 关闭文件描述符 exec 3 >&- 还有一种<>读写文件描述符的,慎用,最好是读完后再重定向写入,不然shell维护的内部指针会把文件内容搞得很混乱。 创建临时文件和目录 mktemp file.XXXXXX mktemp -t 创建在/tmp下面且返回绝对路径 mktemp -d创建目录 tee的使用 tee -a 重定向讲完,再讲讲脚本的控制。脚本的控制主要是信号的处理。

shell编程2

大城市里の小女人 提交于 2020-01-10 05:21:18
-------条件测试 test命令用于测试字符串,文件状态和数字。 1、测试文件状态 test命令一般有2种格式:test condition或[ condition ]使用方括号时注意在条件两边加上空格。 常用的测试文件的条件表达式有: -d:目录;-s:文件长度大于0、非空;-f:正规文件;-w:可写;-L:符号连接;-u:文件有suid位设置;-r:可读;-x可执行。 如:测试first文件是否可写: test -w first echo $? 返回0说明可写,否则不可写;或着: [ -w first ] echo $? 可以实现同样的功能。 2、字符串测试 字符串测试有5种格式: test 'string' test string_operator 'string' test 'string1" string_operator "string2' [ string_operatoer 'string' ] [ 'string1' string_operator 'string2' ] 其中string_operator可以是以下符号: =: 两个字符串相等; !=: 两个字符串不等 -z: 空串 -n: 非空串 如:a="dfsd" b="sdgfg"测试a和b是否相等为: [ '$a' = '$b'] echo $? 返回0说明相等,否则不相等。 3、测试数值

Shell编程-条件测试 | 基础篇

半腔热情 提交于 2020-01-10 05:16:28
什么是Shell Shell是一个命令解释器,它会解释并执行命令行提示符下输入的命令。除此之外,Shell还有另一个功能,如果要执行多条命令,它可以将这组命令存放在一个文件中,然后可以像执行Linux系统提供的其他程序一样执行这个文件,这个命令文件就叫做Shell程序或者Shell脚本。当运行这个文件时,它会像在命令行输入这些命令一样顺序地执行它们。 Shell脚本支持变量、命令行参数、交互式输入、函数模块、各种控制语句等高级编程语言的特性,如if、case、while和for等。利用Shell程序设计语言可以编写出功能非常复杂的脚本程序,把大量的任务自动化,尤其是那些需要输入大量命令而在执行过程中不太需要与用户进行干预的系统管理任务。 为了让Shell能读取并且执行Shell程序,Shell脚本的文件权限必须被设置为可读和可执行。为了让Shell可以找到程序,可以选择输入完全路径名,或者将这个脚本的路径放在PATH环境变量指定的路径列表中。Shell脚本不是复杂的程序,它是由上往下逐行解释执行的。脚本的第一行总是以“#!<Shell解释器文件路径>”开始,用来指定该脚本是使用那种Shell进行解释执行。 编写Shell脚本 1)使用VI或者其他任意的文本编辑工具创建一个名为HelloWorld.sh的文件,并在其中加入以下内容: [root@localhost ~]# vi

Linux Shell常用技巧(目录)

橙三吉。 提交于 2020-01-08 01:57:39
本文转载自: https://www.cnblogs.com/stephen-liu74/archive/2011/12/20/2285454.html 作者:stephen-liu74 转载请注明该声明。 在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化、我们数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题。因此这段时间总结的有关Linux Shell的系列博客就给予了我极大的帮助,然而在实际的使用中却发现,有的时候确实忘记了某个技术点或某个Shell命令的使用方式曾经在哪一篇博客中予以了说明,所以不得不多次点击多篇博客,直到找到想要那篇的为止,鉴于此,为了方便我们每个人的查阅,这里特别给出了前十二篇系列博客的 目录 以供大家参阅和查找。 Linux Shell常用技巧(一) http://www.cnblogs.com/stephen-liu74/archive/2011/11/10/2240461.html 一. 特殊文件: /dev/null和/dev/tty 二. 简单的命令跟踪 三. 正则表达式基本语法描述 四. 使用cut命令选定字段 五. 计算行数、字数以及字符数 六. 提取开头或结尾数行 Linux Shell常用技巧(二) http://www.cnblogs.com/stephen-liu74

SHELL用法一(基本概念)

风流意气都作罢 提交于 2020-01-07 21:58:50
1. SHELL 编程概念入门 1)一个完整 Linux 操作系统(Linux 内核),默认用户是不能直接操作 Linux 内核,需要借助第三方的程序或者软件去操作,例如桌面工具、命令行工具(SHELL)。 2)SHELL 是 Linux 操作系统的外壳,可以将 SHELL 程序理解为中间件,位于用户和 Kernel 之间的沟通桥梁,SHELL 主要是用于接收用户输入的指令,对指令进行解析,并且发送给 Linux 内核。 3)Linux 内核接收到指令之后,会进行处理,会将处理完成的数据信息返回给 SHELL,最终 SHELL 将数据进行解析展示(返回)给用户使用者。 4)SHELL 程序软件类似 Windows 系统的 CMD 命令行,SHELL 看成是命令解释器,用户输入指令,最终通过 SHELL 解释器返回数据。 5)大多数的 Linux 操作系统(Linux 内核),启动之后,启动默认的 SHELL 程序(解释器),CentOS、RHEL、Ubuntu 系统的 SHELL程序:/bin/bash,SHELL 种类比较繁多,不同的 SHELL 的集成的 命令不一样,使用界面各不相同。 6)SHELL 编程的概念?  SHELL 编程是在 SHELL 解释器中编写不同的指令,将不同的指令按照一定的逻辑关系和顺序堆积在文本文件中(SHELL 脚本),最终文本文件中的指令会在