实际案例

1.判断接收参数个数大于1

[ $# -lt 1 ] && echo "至少需要一个参数" && { echo "我要退出了.... "; exit; } || echo "搞到参数"

2.统计文件夹 和 文件数

let etcd=`ls -l /etc| grep "^d"|wc -l`

let etcf=`ls -l /etc| grep "^-"|wc -l`

let sum=$[$etcd+$etcf]

3.取某列的最大值

number=`df | grep '^/dev' | tr -s " " " "|cut -d" " -f5|tr -s "%" " "|sort -n|tail -n1`

4.短路条件判断

[ $# -ne 2 ] && echo "need two args" && exit

5.统计文件的空白行

let b=`grep '^$' $2|wc -l`

6.ping通远程主机

ping -c2 $1 &> /dev/null
    [ $? -eq 0 ] && echo "$1 可以被ping通" || echo "$1 不可以被ping通"

7.一次性删除大批量文件

ls |xargs rm -rf 当删除的文件数量过多,超过了所支持的参数数量上限时,可配合管道及xargs来删除。

8.删除文件中不连续的重复行

    sort -k2n file | uniq > a.out

当file中的重复行不再一起的时候,uniq没法删除所有的重复行。经过排序后,所有相同的行都在相邻,因此unqi可以正常删除重复行。

9.分组倒序排序列表

cat access_log | cut -d" " -f1|sort|uniq -c|sort -nr|head -n10

10.把多条命令当成一条命令集合来执行

id $1 &> /dev/null && echo "$1 user has added" || { useradd $1; echo "add user $1 success"; }

11.查看文件夹和文件的大小  du    -sh

[root@centos7 ~]# du -sh appserver/     appserver是目录
      5.0M          appserver/
   [root@centos7 ~]# du  -sh  f1                  f1是文件
      4.0K         f1

12.查看端口占用情况

1、lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000

可以看到8000端口已经被轻量级文件系统转发服务lwfs占用

2、netstat -tunlp |grep 端口号,用于查看指定的端口号的进程情况,如查看8000端口的情况,netstat -tunlp |grep 8000

shell编程知识点

1.(cmd1;exit;) 和 {cmd2;exit;}的区别

()会开启一个子线程,exit退出的是子进程,对执行线程没有影响

{ }不会开启子线程,exit退出的是执行进程本身.

2.source .bashrc和bash .bashrc的区别

source 表示.bashrc在当前shell进程中运行

bash 会开启一个子shell进程来执行当前shell 脚本

3.字符串匹配

[ "$var"="ha" ] 精确判断$var字符串是否等于ha
      [[ "$var" ~="regx" ]]
      [ x"$var"="x" ] 判断$var字符串是否为空

4.变量格式的保留

echo $name 把所有的行压缩成了一行,不保留文件内容换行格式.
     echo "$name" 添加双引号保留原文件内容的换行格式.

5.bash调试方式

     1.检查语法错误                          bash -n test.sh
     2.跟踪调试执行脚本                 bash -x test.sh

6.bash的配置文件

1.全局配置
              1./etc/profile
               2./etc/profile.d/*.sh
               3./etc/bashrc
        2.个人配置
               1.~/.bash_profile
               2.~/.bashrc

7.shell和其它语言的不同之处

shell把空字符串和1相加运算会得到1,并不会提示错误.其它语言空类型是不能和整数进行运算的

[root@centos7 ~]# a=""
[root@centos7 ~]# b=a+
[root@centos7 ~]# echo b
b
[root@centos7 ~]# echo $b
a+
[root@centos7 ~]# let b=a+
[root@centos7 ~]# echo $b

shell脚本编写实例的更多相关文章

  1. shell脚本编写mind

    首先我们要缩小这个问题的范围 如果在面试中被问到这样的问题,说说shell脚本编写思路 如:你是在公司主要负责zabbix监控的 对答如下:shell脚本这个说法挺广的,您看我这么跟您说吧,我在平时工 ...

  2. shell脚本编写方法

    shell脚本编写就如同一门语言,涉及到运行环境.基本语法.变量定义.函数.参数(系统参数).条件判定.执行流程控制 等等问题. 本文就以下几个方面进行描述: 运行环境: shell  shebang ...

  3. 7. Shell 脚本编写

    一.Shell 脚本编写 1.提示用户输入一个字符串,如果是 hello,打出 yes,并每秒输出 "hello,world",否则就输出 no,实现如下: #!/bin/bash ...

  4. Shell awk文本处理,shell脚本编写

    Shell awk文本处理,shell脚本编写 一:内容包含awk.变量.运算符.if多分支 <a>语法糖: awk [options] 'commands' files option - ...

  5. 基于数组的shell脚本编写

    基于数组的shell脚本编写 2017年08月17日 22:56:36 momokuku123 阅读数:369 数据:变量,文件,数组 变量:存储单个元素的内存中的一块存储空间 数组:存储多个元素的内 ...

  6. shell脚本编写nginx部署脚本

    下面为shell脚本编写的nginx的安装及修改nginx.conf的脚本,脚本比较简单: #!/bin/bash function yum_install(){ yum install epel-r ...

  7. shell脚本编写自动启动服务方法

    shell脚本编写自动启动服务方法 前言 ln :创建连接文件 默认创建的是硬连接,好比复制 ,但是两个文件会同步命令:ln ./java/android/aa.txt aaa s :创建的是软连接变 ...

  8. shell 脚本编写基础

    在进行Linux测试时编写脚本是必不可少的,Shell脚本的名称可以随便定义,也不要什么后缀名,例如可以写abc,smartzip这类名称,运行时只要键入 ./smartzip就能运行脚本了.. 每行 ...

  9. shell脚本编写笔记

    包含转载内容,转载自http://wenku.baidu.com/link?url=jtCHxEYzgGve6P64U3JRQRgU6nhpGvqFLLpWu9I2Htq6hi9TGLudRFkk7r ...

随机推荐

  1. [JS] Topic - variable and function hoisting

    Ref: 深入理解js的变量提升和函数提升 一.变量提升 简直就是es5的遗毒! console.log(global); // undefined 竟然能打印?因为变量提升,下一行就有定义 var ...

  2. 【代码审计】YzmCMS_PHP_v3.6 CSRF漏洞分析

      0x00 环境准备 YzmCMS官网:http://www.yzmcms.com/ 程序源码下载:http://pan.baidu.com/s/1pKA4u99 测试网站首页: 0x01 代码分析 ...

  3. Linux->Windows主机目录和文件名中文乱码恢复

    目录 Linux->Windows主机目录和文件名中文乱码恢复 声明 一. 乱码问题 二. 调试环境 三. 目录和文件名乱码恢复 3.1 可选方案 3.1.1 通过合适的编解码转换 3.1.2 ...

  4. day_5.21 py 高级编程

    1.禁止模块之间的循环调用 2.浅拷贝    只拷贝引用!!\ 3. 深拷贝  只要里面有引用就继续拷贝 4.copy,copy() 5. '''2018-5-21 11:39:52就业班 py高级 ...

  5. 微信小程序获取到Openid

    前台代码片段 onLoad: function () { wx.login({ success(res) { console.log('code: '+res.code) if (res.code) ...

  6. 【mysql】---php链接数据库---【巷子】

    一.创建public文件 <?php //第一件事情连接数据库 header("content-type:text/html;charset=utf8"); //服务器地址 ...

  7. J - MANAGER(2.4.5)

    J - MANAGER(2.4.5) Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:10000KB ...

  8. GEM5安装

    转自:http://blog.sina.com.cn/s/blog_548b0a230101cagk.html GEM5在ubuntu13.10下安装过程,首先下载gem5_stable最新安装包,解 ...

  9. {MySQL完整性约束}一 介绍 二 not null与default 三 unique 四 primary key 五 auto_increment 六 foreign key 七 作业

    MySQL完整性约束 阅读目录 一 介绍 二 not null与default 三 unique 四 primary key 五 auto_increment 六 foreign key 七 作业 一 ...

  10. 开始使用vue和vuetify

    底部加上vue的script <!-- development version, includes helpful console warnings --> <script src= ...