shell脚本编写实例
实际案例
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.删除文件中不连续的重复行
当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脚本编写实例的更多相关文章
- shell脚本编写mind
首先我们要缩小这个问题的范围 如果在面试中被问到这样的问题,说说shell脚本编写思路 如:你是在公司主要负责zabbix监控的 对答如下:shell脚本这个说法挺广的,您看我这么跟您说吧,我在平时工 ...
- shell脚本编写方法
shell脚本编写就如同一门语言,涉及到运行环境.基本语法.变量定义.函数.参数(系统参数).条件判定.执行流程控制 等等问题. 本文就以下几个方面进行描述: 运行环境: shell shebang ...
- 7. Shell 脚本编写
一.Shell 脚本编写 1.提示用户输入一个字符串,如果是 hello,打出 yes,并每秒输出 "hello,world",否则就输出 no,实现如下: #!/bin/bash ...
- Shell awk文本处理,shell脚本编写
Shell awk文本处理,shell脚本编写 一:内容包含awk.变量.运算符.if多分支 <a>语法糖: awk [options] 'commands' files option - ...
- 基于数组的shell脚本编写
基于数组的shell脚本编写 2017年08月17日 22:56:36 momokuku123 阅读数:369 数据:变量,文件,数组 变量:存储单个元素的内存中的一块存储空间 数组:存储多个元素的内 ...
- shell脚本编写nginx部署脚本
下面为shell脚本编写的nginx的安装及修改nginx.conf的脚本,脚本比较简单: #!/bin/bash function yum_install(){ yum install epel-r ...
- shell脚本编写自动启动服务方法
shell脚本编写自动启动服务方法 前言 ln :创建连接文件 默认创建的是硬连接,好比复制 ,但是两个文件会同步命令:ln ./java/android/aa.txt aaa s :创建的是软连接变 ...
- shell 脚本编写基础
在进行Linux测试时编写脚本是必不可少的,Shell脚本的名称可以随便定义,也不要什么后缀名,例如可以写abc,smartzip这类名称,运行时只要键入 ./smartzip就能运行脚本了.. 每行 ...
- shell脚本编写笔记
包含转载内容,转载自http://wenku.baidu.com/link?url=jtCHxEYzgGve6P64U3JRQRgU6nhpGvqFLLpWu9I2Htq6hi9TGLudRFkk7r ...
随机推荐
- Android编译环境——ubuntu12.04上android2.3.4编译错误以及解决
Android编译环境——ubuntu12.04上android2.3.4编译错误以及解决 分类: android应用开发2013-08-21 09:20 4222人阅读 评论(3) 收藏 举报 li ...
- 【mysql】MySQL以逗号隔开的字符串查询方式整理
1 单个值查询使用函数进行处理,FIND_IN_SET()实用 SELECT * FROM `by_info` WHERE FIND_IN_SET(',type_id); 2 多个值模糊查询,使用正则 ...
- js - 移动端的超出滚动功能,附带滚动条,可解决弹层中滚动穿透问题。
背景: 弹层里边有可滚动区域时,在移动端的坑我就不多说了. 找了很多解决滚动穿透的方案,最终都不能完美解决. 一气之下自己js撸了一个. 效果图: 原理: 1.解决滚动穿透:通过给弹层绑定touchm ...
- TensorFlow MNIST 问题解决
TensorFlow MNIST 问题解决 一.数据集下载错误 错误:IOError: [Errno socket error] [Errno 101] Network is unreachable ...
- eclipse无法连接到makertplace
Eclipse需要安装一个Jcoco的插件,但是连接Eclipse Market的时候,总是出现如下的报错: Cannot open Eclipse Marketplace Cannot instal ...
- smarty模板的内置函数
内置函数参考:http://www.php100.com/manual/smarty/language.builtin.functions.html 主要就是 foreach 和 if elseif ...
- python搭建简单http文件服务器
import SimpleHTTPServer import SocketServer PORT = 8000 Handler = SimpleHTTPServer.SimpleHTTPRequest ...
- 时间模块和random模块
时间模块 和时间有关系的我们就要用到时间模块.在使用模块之前,应该首先导入这个模块. #常用方法 1.time.sleep(secs) (线程)推迟指定的时间运行.单位为秒. 2.time.time( ...
- Jenkins插件管理
1.配置jenkins需要的maven.jdk路径 [root@db01 secrets]# echo $JAVA_HOME /application/jdk [root@db01 secrets]# ...
- 前端基础开发之HTML
简介: 1.HTML是什么? htyper ...