Shell 脚本语言的学习

  1. Shell 是一个命令行解释器,它接收应用程序、用户命令,然后调用操作系统内核。
    shell 还是一个功能强大的编程语言,易编写、易调试、灵活性强。
  2. 1.脚本格式
    脚本以 #!/bin/bash 开头(指定解析器)
  3. 反引号`在shell中的应用:表示在``内部的为命令

eg: echo `date`

  1. Shell中的变量
  1. 定义:  变量=值     (等号两侧不能有空格

        变量=‘值’

        变量=“值”

  1. 撤销变量:unset 变量
  2. 静态变量:readonly 变量, (不能unset)
  3. 在bash中,变量默认类型是字符串类型,无法直接进行数值计算
  4. 可把变量提升为全局环境变量,供其他shell程序使用
    expot 变量名
  1. 特殊变量:$n   $#
    1. $n (功能描述:n为数字,$0代表脚本名称,$1-$9代表第1到第9个参数,10及以上的参数需要用大括号包含,如${10})

#! /bin/bash

echo “$0 $1 $2”

    1. $# (功能描述:获取所有输入参数的个数,常用于循环)
    2. $* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)

$@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)

    1. $? (功能描述:最后一次执行命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量为非0(具体哪个数由命令自己来决定),则证明上一个命令执行错误。)
  1. 运算符
  1. 基本语法

“$((运算式))” 或 “$[运算式]”

Expr +,-,*,/,%   (加,减,乘,除,取余)

注意:expr 运算符两侧要有空格 eg:expr 2 - 1

  1. 条件判断
  1. [ condition ] (注意:condition前后要有空格

条件非空即为true,[ atguigu ]返回true,[] 返回 false

  1. 两整数之间比较

= 字符串比较

-lt 小于(less than)               -le 小于等于(less equal)

-eq 等于(equal)                   -gt 大于(great than)

-ge 大于等于(greater equal)               -ne 不等于(not equal)

  1. 按照文件权限进行判断

-r 读权限(read)                           -w 写权限(write)

-x 执行权限(execute)

  1. 按照文件类型进行判断

-f 文件存在并且是常规文件(file)           -e 文件存在(existence)

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

  1. 多条件判断(&&表示前一条命令执行成功时才执行后一条命令,||表示上一条命令执行失败后才执行下一条命令;(类似C中的 “与”“或”的执行逻辑))

[ condition ] && echo “ok” || echo “not ok”

[ condition ] && [  ] || echo “not ok”

  1. 流程控制
  1. if语句

if [ 条件判断式 ];then

        程序

elif [ 条件判断式 ];then

        程序

fi

或者

if [ 条件判断式 ]

    then

        程序

elif [ 条件判断式 ]

    then

        程序

fi

(注意:[ 条件判断式 ],中括判断式前后要有空格

  1. case语句

case $变量名 in

“值1”)

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

        ;;

“值2”)

        如果变量的值等于值2,则执行

        ;;

*)

        如果变量的值不等于以上,则执行

        ;;

esac

(注意:case行尾必须为单词“in”,每一个匹配模式必须以右括号“)”结束

双分号“;;”表示命令行序列结束,相当于C中的break

最后的“*)”表示默认模式,相当于C中的default)

  1. for循环

语法1

for (( 初始值;循环控制条件;变量变化 ))

do

    程序

done

语法2

for 变量 in 值1 值2 ...

do

    程序

done

  1. while循环

while [ 条件判断式 ]

do

    程序

done

  1. read读取控制台输入

read(选项)(参数)

选项:

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

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

参数:

    变量:指定读取值的变量名

  1. shell输入/输出重定向

command > file      将输出重定向到 file。(新内容会替代旧内容)

command < file      将输入重定向到 file。

command >> file     将输出以追加的方式重定向到 file。(新内容加在文件末尾)

n > file            将文件描述符为 n 的文件重定向到 file。

n >> file           将文件描述符为 n 的文件以追加的方式重定向到 file。

n >& m             将输出文件 m 和 n 合并。

n <& m             将输入文件 m 和 n 合并。

<< tag              将开始标记 tag 和结束标记 tag 之间的内容作为输入。

  1. 系统函数
  1. basename 基本语法

basename [string / pathname] [suffix]       

(功能描述:basename命令会删掉所有的前缀包括最后一个‘/’字符,然后将文件名显示出来,即 抹去路径名提取文件名)

选项:

suffix为后缀,如果suffix被定义了,basename会将pathname或string中的suffix去掉。

  1. dirname基本语法

dirname文件绝对路径  

(功能描述:从给定的包含绝对路径的文件名中去除文件名,只保留路径然后返回)

  1. 自定义函数
  1. 基本语法

[ function ] funname[()]

{

    Action;

    [return int;]

}

注:    必须在调用函数之前声明函数,shell脚本是逐行执行的;

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

  1. shell 工具
    1. cut

cut [选项参数] filename

    选项参数:

-f 列号,提取第几列 (eg:-f 1  -f 1,2 -f 2-6 取第1列 第1,2列 第2到6列)   

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

说明:  cut的工作就是‘剪’,在文件中负责剪切数据用的。cut命令从文件的每一行剪切字节、字符和字段并将这些字符、字节和字段输出。

        默认分隔符为制表符。

    1. sed

sed [选项参数] ‘command’ filename

        选项参数:

                -e 直接在指令列模式上进行sed的动作编辑

        命令功能:

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

                d   删除

                s   查找并代替

sed是一种流编辑器,一次处理一行内容。处理时将当前处理的行存储在临时缓冲区中,成为“模式空间”,接着用sed命令处理缓冲区的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复直到文件末尾,文件内容没有改变,除非用重定向存储输出。

    1. awk

awk [选项参数] ‘pattern1{action1} pattern2{action2} ...’ filename

    pattern:    表示awk在数据中查找的内容,就是匹配模式(正则表达式)

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

    选项参数: 

            -F  指定输入文件折分隔符

            -v 赋值一个用户定义变量

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值