shell脚本(一)

摘要:
忽略大小写-n打印行号-o打印匹配内容-c打印匹配行-B打印匹配的第一行-A打印匹配的最后一行-v打印不匹配的行剪切命令(将字符剪切到标准输出)-c以字符单位剪切字符-d自定义分隔符-f与-d一起使用,指定要显示排序命令的区域-k剪切后根据段排序-n根据数值大小排序-r按相反顺序排序-u删除重复行Uniq命令(删除重复行)-c:

                                                           

                    

                         shell脚本

定义:脚本就是一条条命令的堆积。常见脚本有:js asp,jsp,php,python
Shell特点:简单易用高效
Shell分类:图形界面(gui shell) 命令行界面(cli界面)
查看可用的shell类型:
/etc/shells 查看当前shell类型:echo $SHELL



执行脚本的三种方法:

Bash 脚本名称

添加可执行权限

Source 脚本名称

二.Shell编程常用命令

grep

-i:忽略大小写

-n 打印行号

-o 打印匹配内容

-c 打印匹配的行数

-B 打印匹配的前几行

-A 打印匹配的后几行

-v 打印不匹配的行

cut命令(剪切字符至标准输出)

-c 以字符为单位切割

-d 自定义分隔符

-f 与-d一起使用,指定显示哪个区域

Sort命令

-k 根据切割后的一段排序

-n 依照数值的大小排序

-r 以相反的顺序排序

-u 去除重复行

Uniq命令(去除重复的行)

-c:在行首用数字表示该行出现字数

-u 显示不重复的行

Tr命令(转换或删除)

a - z任意小写

A-Z 任意大写

0-9任意数字

变量

一.定义:用来存放各种数据,编程语言组成部分

变量的命名规则

变量名由数字 字母下划线组成

必须以字母或者下划线开头

不能使用shell里面的关键词

2.变量的引用:$变量名 或 ${变量名}

3- 已定义的变量可以重新赋值,只读变量不能删除(readonly 变量名)(unset)

变量类型

局部变量  环境变量  shell变量(特殊变量)

特殊变量

$0  当前脚本的文件名

$n   传递给脚本的参数

$#   传递给脚本的参数个数

$*   传递给脚本或函数的所有参数

$?   上个命令的退出状态,或函数的返回值

条件表达式

[ ] 括号的表达式前后都要有空格

整数表达式

-eq 等于

-ne 不等于

-gt 大于

-le 小于

-ge 大于或等于

-le 小于或等于

字符串比较符(字符串比较时要加双引号

==等于

!= 不等于

-n 字符串不为0为真

-z 字符串为0为真

文件测试符

-e 文件或者目录存在为真

-f 文件存在为真

-d 目录存在为真

-r -w -x 有权限为真

布尔运算符

! 取反

-a 和关系

-o 或者

逻辑判断符

&& 逻辑和,判断是否为真时使用,前者为真执行后面的

|| 如果前面为假,则执行后面的

练习:

  1. 统计系统中以.sh结尾的文件总大小,输出结果以kb为单位

#!/bin/bash

sum=0

for size in `find /root -name "*.sh" -exec ls -l {} ; | cut -d " " -f 5`

do

        let sum+=$size

done

echo "$((sum/1024))kb"

 

2、统计100以内的偶数和

#!/bin/bash
for i in `seq 2 2 100`
do
        let sum+=$i
done
echo "$sum"

3、批量统计主机是否在线

shell脚本(一)第1张

4、输出目录下文件类型到终端

#!/bin/bash
for i in `ls -l | cut -c 1`
do
        if [ $i == "-" ];then
                echo "文件"
        elif [ $i == "d" ];then
                echo "目录"
        else
                echo "其他类型"
        fi
done

5、简单的四则运算

shell脚本(一)第2张

6、创建以1-100为开头的文件,输出到终端

#!/bin/bash
for i in {1..100}
do
        touch $i.txt
        echo $i.txt
        sleep 1
done

7.持续检测内存剩余量

#!/bin/bash
while true
do
        for i in `free -h | awk -F " +" '{print $4}' | head -2 | grep -v free`
        do
                echo $i
                sleep 1
        done
done

8、一键部署nfs服务端

#!/bin/bash
yum -y install nfs-utils rpcbind &>/dev/null
mkdir haha
chmod -R 777 haha/
echo "haha *(rw)" >> /etc/exports
systemctl restart nfs rpcbind

一键部署nfs客户端

#!/bin/bash
yum -y install nfs-utils &>/dev/null
systemctl restart nfs
mkdir haha
showmount -t nfs 192.168.253.10:haha haha

9、统计root目录下以.sh结尾的文件大小

shell脚本(一)第3张

免责声明:文章转载自《shell脚本(一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇树莓派无线网卡配置使用 python 进行身份证号校验下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

小程序下拉刷新

  1、通过scroll-view实现   开始用scroll-view组件,通过scroll-view自带的触发下拉刷新、上拉加载事件。   在iOS下,可以正常触发,但在安卓机型下,必须先上滑一段距离再下滑,才能够触发下拉刷新事件,体验不太好。向小程序官方反馈,给我的回答是安卓机型不支持反弹效果。   上图是官网中关于scroll-view的内容,顺...

go在centos配置以及go mod配置

go版本在1.12及以上版本(使用go version go1.13.4 linux/amd64) 1.在非root以及root(注意两个用户都要执行)下 vim ~/.bashrc 2.在文件最后添加 export GOPATH=/home/wd/go export PATH=$PATH:$GOPATH/bin export GOROOT=/usr/lo...

Android开机logo修改方法 【转】

本文转载自:http://blog.csdn.net/qq258711519/article/details/7766303 一体机平台开机logo修改方法 1:修改Kernel中的Logo:        若是要替换Kernel中的开机Logo,只需要把内核目录drivers/video/logo下的logo_android_1024_clut224.p...

GRUB引导界面背景图片制作完整教程

【转帖】GRUB背景图片介绍来源:Linux公社  作者:Linuxidc这一部分介绍GRUB背景图片的基本信息,如果您只是想知道如何制作一个GRUB背景图片,可以略过此部分。 GRUB使用XPM文件、或用gzip压缩过的XPM文件作为图片背景文件,由menu.lst中的splashimage命令调用。如果打开一个XPM文件,就不难了解其构成方法:定义一个...

git拉取远程分支并创建本地分支

git拉取远程分支并创建本地分支 一、查看远程分支 使用如下git命令查看所有远程分支: git branch -r 查看远程和本地所有分支: git branch -a 查看本地分支: git branch 在输出结果中,前面带* 的是当前分支。 二、拉取远程分支并创建本地分支 方法一 使用如下命令: git checkout -b 本地分支名x...

JFileChooser添加文件过滤

这是java的Swing里的一个选择文件的控件,我们要如何使用它?首先来看看JDKAPI的说明: public class JFileChooserextends JComponentimplements Accessible JFileChooser 为用户选择文件提供了一种简单的机制。有关使用 JFileChooser 的更多信息,请参阅 《The...