Shell的简介

初识shell

什么是shell?

Shell是介于系统内核和用户之间的解释程序;

什么是脚本?

用特定的解释性语言,写作的可执行的文件

创建shell脚本

1)明确任务

2)整理执行语句

3)完善脚本的结构:开头,注释,执行过程信息

 

执行shell脚本

1)chmod +x 脚本,  然后./test.sh执行脚本

2)sh 脚本, 执行脚本  ——指定脚本解释器

3)source 脚本, 执行脚本 ——用系统默认的脚本解释器

 

shell命令的组合运用

 

管道

前一条命令的输出作为后一条命令的输入,从左到右, 单向; 例如:

 

ps aux | gerp http

 

重定向

标准输入:<,改变输入的方式,输入不再是console,可以是文件或其他

 

标注输出:>,>>;分别是覆盖和追加。

 

错误输出:2>,2>>;分别是覆盖和追加。

 

全部输出:&>,&>>;包括标准和错误输出,分别是覆盖和追加。

 

命令分隔

&&:  两条命令都要执行成功,只要有一条执行失败,就失败

||: 两条命令执行一条就可以

;:  分号,简单命令的连续执行

 

 

使用变量

变量的定义和赋值、引用

 

例如: x=2; echo $x;或者${x}

单引号、双引号、反撇号

单引号:禁止引用、转义\;例如:x=2;echo ‘$x’,结果就是$x

 

双引号:可以引用、转义;例如: x=2;echo “$x”,结果就是2

 

反撇号:用命令的输出替换;例如x=`uname -r`; echo “$x”, 结果就是uname执行结果:3.7.10-1.1-default

 

注:用命令的输出替换,也可以直接用$()来使用,例如:$(uname -r)

 

 

常用的环境变量

 

系统赋值:USER, HOME,SHELL

用户操作:PATH,LANG

 

其他的特殊变量

$?:前一条命令执行的结果,cattest.c; echo $?;0标示前一条命令执行成功,非0表示失败;

 

$0:脚本自身的名字,脚本的名字变了,这个变量也会变化;

 

$1-$9:第1—第9个位置参数

 

$*:所有的位置参数

 

$#:位置参数的个数

数值运算及处理

整数运算操作

+,-,*,/,%

 

1.     expr : expr 1 – 2,

2.     $[]: echo $[1 -2]

 

几个数值的处理技巧

变量的递更处理:x=2;let x++; echo $x;x=2;let x--; echo $x; x=2;let x+=5; echo$x

 

使用随机数:echo $RANDOM(0-32767); echo $[RANDOM%100]

 

生产数字序列:seq 首数末数、  seq 首数  增量  末数

 

seq 3: 1 2 3

seq 2 5:2 3 4 5

seq 3 2 10: 3 5 7 9

 

小数运算操作

 

bc命令:echo “5.5 -4.3” |bc

 

限制小数的位数: echo “scale=4; 10/3” | bc

 

字符串处理

字串截取操作

路径分割:

 

dir=/etc/net/ll.txt

 

dirname $dir:/etc/net

 

basename $dir:ll.txt

 

expr: expr substr 变量  起始位置 截取长度, 起始为1

 

var=yunjingguang

expr substr $var 3 3:nji

expr substr $var 1 3:yun

 

 

 

${变量:起始位置:截取长度}:起始为0

 

var=yunjingguang

echo ${var:3:3}:jin

echo ${var::3}:yun

 

字符串替换

 

${}:

${var/old/new}:变量var的第一个old替换成new

${var//old/new}:变量var的所有olde替换成new

 

例如:

var=yunjingguang

echo ${var/u/##}:y##njingguang

echo ${var//u/##}:y##njingg##ang

 

使用随机字符串

随机设备:/dev/urandom;  head -1  /dev/urandom

 

md5转换:head -1  /dev/urandom |  md5sum

 

字符串的切割:echo “$var”  | cut –b  起始位置-结束位置

注:当从开始切割时,起始位置可以省略,结束位置为末尾时,结束位置可以省略; -8  9-

 

例如:head -1  /dev/urandom  | md5sum  | cut –b  1-5

 

/dev/urandom 产生的第一行数据经过md5运算, 运算结果截取第1个到第5个

 

条件测试

测试操作规范

根据$?来判断条件是否成立; /home/y_jg  是否是一个目录:

 

test 条件表达式:test –d “/home/y_jg”  && echo YES

 

[ 条件表达式 ]: [ -d  “/home/y_jg”] && echo YES

 

条件不成立:[ -d  “/home/y_jg”]  && echo YES

 

文件状态的检测

 

 

存在及识别

 

-e:是否存在(Exit)

-d:是否是目录(Directory), 先检测是否存在

-f:是否是文件(File),先检测是否存在

 

 

权限的检测

 

-r:是否有读取的权限

-w:是否有写入的权限(文件不可写时, 但是文件的所有者还是可以写入)

-x:是否有可执行的权限

 

 

 

整数值比较

 

-eq:等于(Equal)

-ne:不等于(No Equal)

-gt:大于(Greater Than)

-lt:小于(Lesser Than)

-ge:大于或等于(Greater orEqual)

-le:小于或等于(Lesser orEqual)

 

例如:

 

[ $(who | wc  -l) -eq  2]  && echo YES

 

 

字符串匹配

=:两个字符串相同

!=:两个字符串不同

 

[ $USER = “y_jg” ] && echo YES

[ $USER != “zhangsan” ] && echo YES

 

 

 

 

使用if判断结构

单分支if语句结构

If  条件测试

       then  命令序列

fi

双分支if语句结构

If  条件测试

       then  命令序列

else 命令序列

 

fi

多重分支的if应用

If  条件测试

       then  命令序列

elif

       then  命令序列

else 命令序列

 

fi

 

使用for循环

for语句结构

 

for 变量 in 取值列表

do

       命令序列

done

 

取出所有“取值列表” 中的值进行处理,当取到最后一个值后就退出。

 

退出方法:break, continue, exit[n]

 

 

使用case分支

基本用法规范

case 变量 in

 

模式1)

              命令序列

;;

 

模式2)

              命令序列

;;

 

模式3)

              命令序列

;;

 

*)

              默认的命令序列

;;

esac

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值