自学shell脚本

  首先学习赵文宇的总结脚本:

1.变量

HOST=$(/bin/hostname)
将()里的命令执行后的结果赋值给HOST变量
HOST=`/bin/hostname`

将反引号里面的执行结果赋值给HOST变量

2.echo

echo $?   // 对上一次命令执行成功与否成功$?为0

3.if等一些需要条件判断的语句
(1)判断文件是否存在且是否为文件
[ -f file ]
判断文件是否存在且是否为可写文件
[ -w file ]
判断文件是否存在且是否为可执行文件
[ -x file ]
判断文件是否存在且是否为可读文件
[ -r file ]
判断文件是否存在且是否为目录文件
[ -d file ]
判断文件是否存在且是否为空文件
[ -s file ]
判断文件是否存在
[ -e file ]
[]和 test功能一样  -a和-o(和,或)

(2)整数值比较判断
[ -eq ]
[ "$a" = "0" ]
(( a % 2 == 0 ))

注意:(( a == 50 )) 数值的比较,在(())里用不用$都一样

[ -n string ]     //string 的长度大于0
[ -z string ]     //string 的长度为0
 string1=string2    //字符串相等
 string1!=string2    //字符串不相等
[ int1 -gt int2 ]   //int1>int2      greater than
[ int1 -ge int2 ]   //int1>=int2     greater equal
[ int1 -eq int2 ]   //int1=int2        equal
[ int1 -ne int2 ]   //int1!=int2      not equal
[ int1 -le int2 ]   //int1<=int2         less equal
[ int1 -lt int2 ]   //int1<int2       less than

(3)符串比较
[ "$a" = "$b" ]
[ -n "$a" ]和 [ "$a" ]一样 判断字符串$a是否为空
[[ "$a" == *"redhat"* ]]和[[ "$a" = *"redhat"* ]]判断-在$a中是否含有redhat字符串

(4)if后接的是命令 &&和||
if rpm -q gcc && id tom||echo "sss"  // &&如果前面的命令执行成功则执行&&后的命令否则执行||后面的命令

4.sed

sed -ri /^#ServerName.*:80$/s/^#// /etc/selinux/config  //找出/etc/seliunx/config文件中以#ServerName开头以:80结尾的行并将#替换成空白

5.

df -Th|grep "/$"|awk ‘{print $6}‘|sed ‘s/%//‘  //df后截取某个字段并替换

6.

时间: 2024-11-16 18:58:14

自学shell脚本的相关文章

Shell脚本的自学之路---开门篇,简单介绍和使用

首先我们就不介绍shell脚本具体是什么东东了,这个博客只是记录自己学习shell脚本的每一步. 首先介绍一下shell的基本规则: Shell 脚本不是复杂的程序,它是按行解释的,脚本第一行总是以  #!/bin/sh开头,它通知系统以下的 Shell 程序使用系统上的 Bourne Shell 来解释.第二行注释中写入脚本名,第三行注释开始写入脚本功能-- 习惯.一般是通过vi编辑器来编写shell脚本的. 接下来正式进入我们的shell编程的第一步:  在命令行中输入  sudo vi s

Linux自学笔记——shell脚本编程

脚本文件格式: 第一行,顶格:#!/bin/bash 注释信息:# 代码注释: 缩进,适度添加空白行 语言:编程语法格式,库,算法和数据结构: 编程思想: 问题空间 à解空间 变量: 局部变量 本地变量 环境变量 位置参数变量 特殊变量 数据类型:字符型.数值型 弱类型:字符型: Bash中的算术运算: +,-,*,/,%,** 实现算术运算: 1)let var=算术表达式: 2)var=$[算术表达式] 3)var=$((算术表达式)) 4)var=$(expr arg1 arg2 arg3

Follow me---快速入门shell脚本编写(二)

上次在写shell的时候发现vi和vim不一样:vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面.vim要比vi好用许多. 这次接着上次的内容,基础知识,继续学习,本文作者也在自学中,纰漏错误在所难免,若有人发现问题请指出谢谢! Lee出品,转载请注明出处http://blog.csdn.net/hnulwt/article/details/43155797 布尔运算符 先大致熟悉一下布尔相关的三个运算符 ! 非运算 -o 或运算(or) -a 与运算(and) 接着

20.5 Shell脚本中的逻辑判断;20.6 文件目录属性判断;20.7 if特殊用法;20.8 20.9 cace判断(上下)

扩展: select用法 http://www.apelearn.com/bbs/thread-7950-1-1.html 20.5 Shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi 1. 创建if1.sh测试脚本: [[email protected] ~]# vi if1.sh a=5,如果a大于3,满足这个条件,显示ok 添加内容: #!/bin/bash a=5 if [ $a -gt 3 ] then echo ok fi 2. 执行if1.sh脚本: [[e

20.1 Shell脚本介绍;20.2 Shell脚本结构和执行;20.3 date命令用法;20.4 Shell脚本中的变量

20.1 Shell脚本介绍 1. shell是一种脚本语言 aming_linux blog.lishiming.net 2. 可以使用逻辑判断.循环等语法 3. 可以自定义函数 4. shell是系统命令的集合 5. shell脚本可以实现自动化运维,能大大增加我们的运维效率 20.2 Shell脚本结构和执行 1. 开头(首行)需要加: #!/bin/bash 2. 以#开头的行作为解释说明: 3. 脚本的名字以.sh结尾,用于区分这是一个shell脚本 4. 执行.sh脚本方法有两种:

shell脚本交互:expect学习笔记及实例详解

最近项目需求,需要写一些shell脚本交互,管道不够用时,expect可以很好的实现脚本之间交互,搜索资料,发现网上好多文章都是转载的,觉得这篇文章还不错,所以简单修改之后拿过来和大家分享一下~ 1. expect是spawn: 后面加上需要执行的shell命令,比如说spawn sudo touch testfile 1.3 expect: 只有spawn执行的命令结果才会被expect捕捉到,因为spawn会启动一个进程,只有这个进程的相关信息才会被捕捉到,主要包括:标准输入的提示信息,Li

利用SHELL脚本来验证Oracle数据库RMAN备份集的有效性

利用SHELL脚本来验证Oracle数据库RMAN备份集的有效性 作者:赵全文  网名:guestart 我们生产环境的Oracle数据库都做了RMAN备份,是采用了一周的RMAN备份保留策略:除了使用RMAN备份以外,我们还使用了爱数(Eisoo)备份软件来进行备份,可以说是做到了有备无患.可是,如果有一天,Oracle数据库由于主机层面硬件原因或是数据库层面的原因不能对外提供高可用服务的时候,假设数据丢了一大部分,我们只有用RMAN备份来进行恢复,再如果发现,RMAN备份失效了,那就往地缝里

如何在linux Shell脚本里面把一个数组传递到awk内部进行处理

前段时间和几位同事讨论过一个问题:Shell脚本里面怎样把一个数组传递到awk内部进行处理? 当时没有找到方法.前两天在QQ群里讨论awk的时候,无意间又聊起这个话题.机缘巧合之下找到一个思路,特此分享. 测试环境: [root]# head -1 /etc/redhat-release Red Hat Enterprise Linux Server release 6.5 (Santiago) [root]# awk --version | head -1 GNU Awk 3.1.7 众所周知

利用shell脚本批量修改表

最近公司里因为开发新功能,程序员需要快速在某一个库里的所有表添加字段,于是就用shell脚本简单快速实现批量修改表添加字段 #!/bin/bash export mysql_bin=/usr/local/mysql/bin export database=database export tables=`$mysql_bin/mysql -Bse "use ${database};show tables;"` for i in ${tables}         do