xshell编程小结

初步学完shell脚本编程,通过这篇博客对其小结一下

shell定义:shell其实是一个命令解释器,它的作用是解释用户输入的命令和程序

shell脚本:我们可以在文本中输入一系列的命令、控制语句和变量,这一切有机的结合起来就形成了功能强大的shell脚本。

一.基础语法

1.查看系统脚本解释器

常用的是bash解释器

2.使用bash解释器执行脚本的三种方式:

bash xx.sh

sh xx.sh

./xx.sh(注意是否有权限,没有通过chmod 755 xx.sh 或chmod u+x xx.sh 添加权限)

3.shell中的变量

系统变量

$HOME 家目录

$PWD 当前目录 

$SGELL 解释器路径

$USER 用户

自定义变量

变量名=变量值  注意等号两边没有空格

撤销变量 unset 变量名

静态变量

readonly 变量名=变量值(declare -r 变量名=变量值) 

静态变量不能撤销,关机或运行完脚本自动失效

全局变量

变量名=变量值

export 变量名

特殊变量$

$n

n为数字,$0代表该脚本名称,$1-$9代表第一到第九个命令行参数,第十个及以后的参数需要用大括号包含,如${10}

$#

获取所有输入参数的个数

$@ 和$*

$@和$*都表示命令行中所有的参数,一般看来没有区别,for循环打印时都是一个个打印,但当用双引号分别将他们括起来,"$@"是分裂的,不是一个整体(for i in "$@"),而“$*”是一个整体

$?

最后一次执行命令的返回状态,如果值为0,证明命令执行正确,非0命令执行不正确

注意:函数中,函数的返回值只能有$?获取,且返回值小于等于255。单独比较大小时,结果也是由$?获取

4.运算符

乘除加减

第一种方式:$((运算式))和$[运算式],运算符之间有没有空格无所谓

第二种方式:`expr 变量1  +-*/% 变量2` 运算符之间有空格 ,要加反引号

条件判断

[ condition ] 条件与两端括号之间有空格

大小判断

 -lt 小于

-le 小于等于

-ge 大于等于

-gt  大于

-eq  等于

-ne  不等于

文件类型判断

-f  文件存在且是一个常规文件

-e 文件存在

-d 文件存在是一个目录

文件权限

-r 有读的权限

-w 有写的权限

-x 有执行的权限

多条件判断

&& 与

|| 或

!逻辑否

5.流程控制

if语句

if [ 条件判断式 ];then

fi

if [ 条件判断式 ]

then

fi

if [ 条件判断式 ]

then

else

fi

if [ 条件判断式 ]

then

elif [ 条件判断式 ]    

fi

case语句

case $变量名 in 

“值1”)

            程序

;;

“值2”)

            程序

;;

*)

            都不是

;;

esac

 

for 循环

for ((初始值;条件;;变量变化))

 do

    程序

done

for 变量 in 值1 值2 值3

do

    程序

done

while 循环

while  [ 条件判断式 ]

do

程序

done

读取控制台输入

read(选项)(参数) 变量

读取输入赋值给变量

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

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

read相当于python中的input

read -t 7 -p “enter your choice” NAME

6.函数

系统函数

basename函数截取文件名称

basename [string/pathname] 

basename [string/pathname]  [suffix]

basename 会只保存路径的最后一项,只剩文件名

dirname 函数

dirname函数与basename作用相反,截取内容相反

获取执行脚本的路径

pw=$(cd `dirname $0`;pwd)

自定义函数

[function] funcname[()]      function ,()可写可不写

{

   程序

 [return xx]

}

返回值由$?获取,返回值(0-255)

注意:必须在调用函数地方之前,先声明函数

一个脚本使用另一个脚本的函数

.  脚本名

函数名

二.shell工具

1.cut命令

cut 命令从文件的每一行剪切字节,字符等数据,并将符合的数据输出

cut [选项参数] filename

默认分隔符是制表符

参数 -f 提取第几列

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

2.sed

sed是一种流编辑器,它一次处理一行内容把当前处理的行存储在临时缓冲区中,称为模式空间,接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区中的内容送往屏幕

接着处理下一行,这样不断重复,知道文件末尾,注意文件的内容没有被改变,除非你使用重定向存储输出

sed  [选项参数]   命令 filename

选项参数

-e  有多个命令时使用

-n 只显示处理过的行

命令参数

a 新增 

d 删除

s 查找并替换

sed -n '1,/内容/'p 文件    显示第一行到包含匹配内容的那一行

 

sed -n 'num'p  文件     显示第num行

sed “na  内容” 文件名                           在n行后加上内容

sed  "s/旧 内容/新内容/g" 文件名          替换,g全局替换,否则只换一个

sed -e "nd" -e  "s/旧内容/新内容/g"  文件名          删掉第n行并替换内容

3.awk

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

命令格式:

awk [选项参数] 'pattern{action1} pattern {action2}.....' 文件名

pattern 表示awk在数据中查找的内容,就是匹配模式 (/内容/  是匹配格式)

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

在开始和结束地方加上新的内容

BEGIN 在所有数据读取前执行,END在读取所有数据后执行

awk的内置变量

FILENAME 文件名

NR 已读的记录数(执行到第几行)

NF浏览记录的域的个数(切割后,列的个数)

统计文本有几行

查找文件空行所在的行号

$0代表一行所有内容,$1-$9代表第一列到第九列

sort 工具

将文件进行排序,并将排序结果标准输出

sort(选项)(参数)

-n 依照数值大小排序

-r 以相反顺序排序

-t 设置排序使用的分割字符

-k 指定需要排序的列

参数:指定需要排序的文件

求一列的和

三.shell中一些重要命令

重定向   

>>追加

>写入(覆盖写)

2> 重定向标准错误

2>>重定向标准错误

&>重定向标准输出和标准错误

管道操作符号|

前面的内容交给后面处理

wc -l

判断输出内容有几行

输出命令echo

echo  内容    输出一行默认换行

单独echo 相当于空行

echo -e 内容    可以转义字符  (\n,\t)

echo -n 内容     不转义字符

echo  注意事项:

echo “内容”  与 echo '内容'区别

 双引号可以包含变量,但单引号不能解析变量

反引号可以解析命令

设置字体颜色

echo -e “\033[x;ym 内容 \033[0m”

x 字体颜色 30~37

y 背景颜色 40~47

head

输出文件前10行

 find

find 搜索区域 -name  文件名     以名字查询文件(模糊查询用*)

find 搜索区域 -perm   权限        根据权限查询

find  搜索区域 -user    用户        根据使用者查询

find  搜索区域   -type  文件类型(d,f)   根据文件类型查找

find  搜索区域   -size    文件大小     根据文件大小查询(+大于,-小于,c字节,k,M)

find  搜索区域   -mtime   时间          根据修改时间查找(+超过多少天,-在几天内)

 shell正则

grep “匹配内容”  文件名

grep -c ‘匹配内容’ 文件

grep -n  ‘匹配内容’ 文件

grep -i "匹配内容" 文件   忽略大小写

grep -v “内容xx” 文件  不包含内容xx的行(除去特定行)

grep -E “^xx”/"xx$"   以xx开始和以xx结束(-E代表使用正则)

grep -E ".+xx.+"  内容xx 在行中间

grep -E "^$" 文件   匹配空行

grep  -E “(xx)+” 文件 匹配多次出现一次或多次xx的行

grep  -E “(xx){num}”  文件  匹配连续出现num次的xx行

uniq命令

uniq -c 文件  打印紧挨着的重复行次数与内容(重复但隔着的不打印)

uniq -d 文件 只打印重复的行

split

split -n 被分割文件  保存文件                   每n行分割,保存到文件中

查看 是否安装服务

rpm -qa | grep  服务名

查看服务是否正常

nc -w num   ip   端口名        有正常的显示,服务正常

制作菜单

cat   <<eof

内容

eof

cat <<eof 相当于echo,能一次输出多行字符串,包括变量

 

 

 

 

 

  

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/zk-njupt/p/10765657.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值