shell脚本总结

前端之家收集整理的这篇文章主要介绍了shell脚本总结前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

shell总结

shell脚本的本质是shell命令的有序集合

建立shell脚本的步骤:建立shell脚本,编写任意多行操作系统命令或shell命令,增加文件的执行权限,结束

shell变量

shell允许用户建立变量存储数据,但不支持数据类型。将任何赋给变量的值都解释为一串字符

shell有如下四种变量:用户自定义变量,位置变量,预定义变量,环境变量

用户自定义变量:

定义变量:COUNT=1

使用时前面加$echo$COUNT

删除变量的赋值:unsetCOUNT

位置变量:

$0与键入的命令行一样,包含脚本文件

$1,$2...$9分别包含第一个到第九个命令行参数

$#包含命令行参数的个数

$*包含所有命令行参数:“$1,$2...$9

$$包含正在执行进程的ID

shell环境变量

CDPATH用于cd命令的查找路径

HOME用户主目录

PATH路径

shell程序和语句

shell程序由0nshell语句构成,shell语句包括三大类:功能性语句、结构性语句、说明性语句

说明性语句:以#开始的部分,不被解释执行

可以出现在程序的任意位置,可以单独一行,也可以接在执行语句的后面

功能性语句:任意操作系统命令、shell内部命令、自编程序、等

read从标准输入读出一行,赋给后面的变量

readvar#把读入的数据全部赋给var

readvar1var2var3#把读入一行的第一、二个词分别赋给var1var2,其他的都赋给var3

如果执行read语句时标准输入无数据,则程序在此停留等候,直到数据到来或终止运行

expr主要用于简单的整数运算,包括+-\*/%

反撇号用于引用命令的运行结果

test用于测试三种对象:字符串、整数、文件属性

可用[]代替,注意左右都至少一个空格

语法结构:

case字符串变量in#case语句只能检测字符串变量

模式1

命令表1

;;

模式2

命令表2

。。。。

*)#*表示其他所有

命令表n

;;

esac

例如:

case$1in

file1)

echo“file1”

;;

file2)

echo“file2”

;;

*

echo“others”

esac

do

命令表

done

与上面的相反

循环控制语句:

breakcontinue

breakn跳出n

continue 马上跳转到最近一层循环的下一轮循环

continuen转到最近n层循环语句的下一轮循环上

shell函数

shell程序中,常把完成固定功能且多次使用的一组命令封装在一个函数中,每当要使用时,调用函数名即可

函数调用前必须先定义,即顺序上先定义函数,再调用

调用程序可以传递参数给函数函数可以用return语句把运行结果返回调用程序

函数只在当前shell中起作用,不能输出到子shell

shell函数定义格式

functionfuntion_name()#function可以省掉

{

...

}

函数调用方式

value_name=`function_name[arg1arg2...]`#函数结果返回给变量

正斜杠//之间

元字符:表达的是不同于字符本身的含义

本书中的元字符两类shell元字符、正则表达式元字符,它们各司其职,shell元字符是由shell解析的,就是下面所讲的文件名置换;正则表达式元字符是由各种执行模式操作的程序来解析的,如vigrepsedawk

---------------------------------------------------------------------

正则表达式元字符:

^行首定位

$行尾定位

.匹配单个字符

*匹配0或多个重复的位于*前的字符

[]匹配指定组字符中的任意一个;如[LlT]

[-]匹配指定范围内的字符;如[x-yA-Z0-8]

[^]匹配不在指定组内的字符

[^-]跟上面的相反

\转移跟在后面的字符#转义元字符,使之不被解释

\<词首定位符#定位以什么开头的词

\>词尾定位符#定位以什么结尾的词

grep家族

grep家族由grepegrepfgrep组成

grep命令文件全局查找指定的正则表达式,并打印所有包含该表达式的行

一般格式:grep[选项]基本正则表达式[文件]

选项:-n显示行号-i大小写不敏感-w表达式作为来查找,也就是不是一个词的一部分-r递归查找

基本正则表达式:可为字符串,如果为字符串,最好用“”如果是模式匹配,用‘’调用变量时,也应该使用“”

文件:可以为多个文件;如A1A2

常用举例

grep-n“your”www#文件www中查找含有your单词的行,且输出行号

grep-nw“your”www#文件www中查找含以your做单词的行,且输出行号

grep-nr‘[a-zA-Z0-9].you’./#递归./中查找含有以a-zA-Z0-9开始的单词

nd命令及xargs

findpathname-options[-print-exec-ok]

常用的optionsname此时记住要用引号将文件名模式引起来

find./“*org.txt”#在当前目录及子目录中寻找以org.txt结尾的文件

find找到文件后可用xargs对其操作

find./“*org.txt”|xargsls

find./“*org.txt”|xargsgrep“device”#在结果中搜索device

启动

系统启动后

->init->getty进程

->/bin/login初始化环境,启动shell

->/bin/bash执行/ect/profile,执行~/.bash_profile~/.bash_login~/.profile,执行~/.bashrc

->等待用户输入

环境

一个进程的环境包括变量等,它定义了可以从一个进程继承到下一个进程的特性

用户shell配置定义在shell初始化文件中,bashshell有许多启动文件,这些文件可以执行source命令,对一个文件执行source命令会使得这个文件中的所有设置称为当前shell的一部分,也就是说不会创建子shell

登陆时,会执行~/.bash_profile文件执行source命令,如无,则source~/.bash_login,若无,则source~/.profile,这三个文件只能source一个,再source~/.bashrc

~/.bashrc:包含特定的变量和别名,当一个新的bashshell启动或bash脚本启动时会自动执行source~/.bashrc

在当前提示符下输入shellbash启动的是子shell

/etc/bashrc:系统级的函数和别名可以在/etc/bashrc文件中设置,主提示符一般在这设置

~/.profile是一个用户定义的初始化文件,它是被Bourneshell使用的,因此不能包括bashshell的特定设置,运行bash时只有没找到其他文件时才source文件,它允许用户定制和修改shell环境,也可以放应用程序的初始化

如:lsapp*

cdcmdd*

?匹配文件(夹)名中的任意一个字符

[...] 匹配[]中的任意一个字符

[!...] 不匹配[]!的任意一个字符

如:ls[a-z]*.o#匹配以a-z开头的已.o结尾的文件

ls[!0-9]*.o#匹配以非0-9开头的已.o结尾的文件

原文链接:https://www.f2er.com/bash/391717.html

猜你在找的Bash相关文章