SHELL编程

牧云@^-^@ 提交于 2020-08-12 05:46:05

1.Shell编译器

默认解析器是bash

echo $SHELL   

2.创建第一个示例脚本,hello world

touch helloworld.sh

vim helloworld.sh

#!/bin/bash            #指定解析器

echo "helloworld"

运行区别:

1.sh不需要执行权限     本质是bash解析器帮你执行脚本,所以脚本本身不需要执行权限

2.   ./helloworld.sh 需要执行权限  ,本质是脚本需要自己执行

 

创建一个多命令脚本

需求:在/home/某目录下创建一个banzhang.txt,在banzhang.txt文件中增加"I love cls"

 

 

系统变量和自定义变量

常用系统变量:查看所有环境变量  env

$HOME   当前家目录

$PWD     当前目录

$SHELL   默认解析器

$USER    当前用户

 

自定义变量

定义变量:变量=值      =号两边没有空格

撤销变量:unset 变量

设置静态变量B=2,无法unset(重启时自动删除)

注意事项:

1.变量名可以由字母,数字,下划线组成,但是不能以数字开头,环境变量名建议大写

2.等号两边不能有空格

3.在bash中,变量默认类型都是字符串类型,无法字节进行数值运算

4.变量的值如果有空格,需要使用双引号或者单引号括起来

 

可将变量提升为全局变量:export  变量名

 

特殊变量:基本语法

$n  #功能描述:n为数字,$0表示该脚本名称,$1-$9代表第一到第九个参数,十以上的参数需要用大括号表示${10}

 

$#    功能描述:获取所有输入参数个数,常用于循环

 

$*      这个变量代表命令行中所有的参数 $*把所有的参数看成一个整体

$@     这个变量也代表命令行中所有的参数,不过$@把每个参数都区别开来

 

$?   最后一条执行命令的返回状态,如果这个变量值为0,证明上一个命令正确执行,如果这个变量的值为非0(具体为哪个值,由命令来确定,则证明上一个命令执行不正确)

 

运算符:

    基本语法:

        1.”$((运算符))“或$[运算符]

        2.expr +,-,\*,/, %  加减乘除,取余

注意:expr运算符之间要有空格

 

3+2

(3+2)×4

 

条件判断:

1.基本语法

[ condition ] 注意condition前后要有空格

注意:条件非空即为true,[atguigu]返回ture,[]返回false

 

常用判断条件

(1)两个整数之间比较

= 字符串比较

-lt  小于(less than)     -le  小于等于(less equal)   -eq 等于(equal)   -qt 大于(greater than)   -ge  大于等于(greater than)    -ne 不等于(not equal)

(2)按照文件权限进行判断

-r 有读的权限 (read)    -w 有写的权限(write)   -x 有执行的权限 (excute)

(3)按照文件类型进行判断

-f  文件存在并且是一个常规的文件(file)

-e  文件存在(existence)    -d 文件存在并且是一个目录(directory)

多命令判断 

&&表示前一条命令执行成功时,才执行后一条命令

||表示上一条命令执行失败后,才执行下一条命令

 

 

流程控制:

if判断:

1.基本语法:

    if [ 条件判断式 ] :then

        程序

    fi

或者

    if [条件判断式]

        then

            程序

    fi

注意事项:

(1)[  条件判断式  ] 中括号和条件判断式之间必须有空格

(2)if后面必须有空格

 

case $变量名 in

    ”值1“)

        如果变量的值等于值1,则执行程序1

    ;;

    ”值2“)

        如果变量的值等于值1,则执行程序

    ;;

    *)

;;

esac

注意事项:

 

 

For循环

1.for((i=0;i <100;i++))

do

        程序

done

2. for 变量  in  值1,值2,值3

    do

        程序

    done

案例:打印所有参数

 

while [ 条件判断式 ]

    do

        程序

    done

 

基本语法

read(选项)(参数)

选项:

    -p: 指定读取值时的提示符

    -t:指定读取值时等待的时间

 

系统函数

basename  [string/pathname] [suffix]

Dirname

 

自定义函数

[function] funname[()]

{

    action

    [return int;]

}

注意:

1.必须在调用函数之前,先声明函数,shell脚本时逐行运行的,不会像其他语言一样先编译

2.函数返回值,之恶能通过$?系统变量获得,可以显性的加return返回,如果不加,将以最后一条命令运行结果,作为返回值,return后跟数值n(0-255)

 

 

 

 

cut:在文件中负责剪切数据用的,从文件的每一行剪切字节,字符和字段并将这些字节,字符和字段输出

基本用法:cut [选项参数] filename

说明:默认分隔符是制表符

选项参数说明

-f         列号,提取第几列

-d        分隔符,按照指定分隔符分割列

cut -d : -f 3-

 

 

sed

基本语法

sed  [选项参数] 'command' filename

选项参数:

    -e  字节在指令列模式上进行sed的动作编辑,多指令操作

命令描述

    a   新增,a的后面可以接字符串,在下一行出现

    d   删除

    s   查找并替换

 

 

awk:一个强大的文本分析工具,把文件逐行的读取,以空格为默认分隔符将每行切片,切开的部分在进行分析处理

基本用法

awk [选项参数] ‘pattern1{action}  pattern2{actions2} ...’ filename

pattern:表示AKW在数据中查找的内容,就是匹配模式

action:在找到匹配内容时所执行的一系列命令

选项参数说明

-F  指定文件拆分隔符

-v  复制一个用户定义变量

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!