Linux的shell编程

Linux提供的Shell解析器有:sh,bash,

bash 和sh的关系:sh是bash的软链接

1.定义变量:变量名=“ xx”

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

注意,等号两侧不能有空格,如果有空格,必须要用‘单引号或者双引号包裹

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

拿变量值:echo $变量名
2.删除(取消)变量:unset 变量名
3.定义数组:数组名=(“元素1” “元素2”...)

取数组值

单个 echo ${数组名【下标】}

全部 echo ${数组名 【*】}

4.提升变量访问范围:export 变量(全局)
5.正确选择引号:

没有空格,不需要加引号

单引号:不会解析内部变量

双引号:会自动解析内部变量

6.反引号:可以将命令的结果保存至变量中

变量名 = 命令(反引号包裹)

变量名=$(命令)

7.特殊的变量名:
1.$n :n为数字 ,$0代表脚本名称,$1-$9,代表第一到第九个参数,10以上的参数${10},(对应的$n只会拿对应的固定位置参数)
2.$#:获取参数个数,常用于循环
3. $* :这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体,(相当于会把所有参数当作一个字符串)
4.$@:这个变量也代表命令中所有的参数,会把$@把每个参数区分对待,(相当于把所有参数当作数组元素,一样输出)
3.$?:表示查看上一次命令或者脚本的执行状态结果是否正确,如果为0,表示正确,如果非0,表示错误
8.运算符: +,-,"*",/,%(加,减,乘,除,取余)

运算写法:

echo $[运算式] 或者

echo $((运算式))

或者 expr n + n

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

9.逻辑运算符:格式: [条件] 注意:[] 里面前后必须要有空格

结果:0表示真,非0表示假

1.两个整数之间比较:

=字符串比较

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

-eq:等于(equal) -gt :大于(greater than)

-ge :大于等于(greater equal) -ne:不等于(Not equal)

2.按照文件权限进行判断:

-r:读权限 -w:写

-x:执行

3.按照文件类型进行判断:

-f:普通文件 -e:文件存在 -d:文件存在并是一个目录

4.多条件判断:(&&表示前一条命令执行成功时,才执行后一条命令 ,||表示上一条命令执行失败后,才执行下一条命令)

10.正则表达式:使用单个字符串描述,匹配一系列符合某个语法规则的字符串

^:匹配以什么开头

$:以什么结尾

. :匹配任意字符

*:不单独使用,表示匹配上一个字符的任意次数,

字符区间(中括号):[]

[6,8]:匹配6或8

[0-9] :匹配·1个0-9的数字

[0-9]*:匹配任意长度的数字字符串

[a - z]:匹配1个a-z之间的字符

[a-z]*:匹配任意长度的字母字符串

[a-ce-f]:匹配a-z或者e-f之间的任意一个字符

特殊字符: \

\表示转义,并不会单独使用,当匹配到某一特殊字符本身,就会困难,

例如,输出中含有$,那么必须是 “ \\$ '',或者 ‘\$’

11.扩展的正则表达式:如{n,m},对于这种,grep匹配需要添加 -E选项,

语法格式(if,for,while,case,select,unitl,read,自定义函数)

1.if:(条件选择)

注意事项:1. [ 条件判断式 ] ,中括号和条件判断式之间必须要有空格

2.if 后要有空格

用法格式:

if 判断条件 ;then

条件为真的分支代码

elif 判断条件2 ;then

条件为真的分支代码

else

以上条件都为假的分支代码

fi

2.case:(条件判断)

case $name in

PART1)

cmd

;;

PART2)

cmd

;;

*)

cmd

;;

esac

注意事项:

1.case行尾必须为单词in,每个模式匹配必须以右括号“)”结束

2.双份号“;;”表示命令序列结束,相当于java的break

3.最后的“*)”表示默认模式,相当于java的default

3.for:(循环)

用法格式:

方式一:

for name in 列表 ;do

循环体

done

方式二:

for ((初始值;条件表达式,变量改变));do

cmd

done

此处常用$* 和 $@

注意区别,$@会将所有参数当作数组元素,$*会将所有参数当作1个字符串

#####

4.while:

用法格式:

while 循环控制条件 ;do

循环

done

循环控制条件;进入循环之前先做一次判断,每一次循环之后再次做判断,条件为true,则执行,知道false

5.unitl:

用法格式:

unitl 循环体 ;do

循环

done

进入条件:循环为true,退出条件,循环条件为false,刚好和while相反,不常用

6.select:

select variable in list

do

循环体命令

done

7.read:read(选项)(参数)

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

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

参数

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

8.自定义函数:

[ function ] funname[()]

{

Action;

[return int;]

}

funname

(1)必须在调⽤函数地⽅之前,先声明函数,shell脚本是逐⾏运⾏。不会像其它语⾔⼀样先编 译。

(2)函数返回值,只能通过$?系统变量获得,可以显示加:return返回,如果不加,将以最后⼀

条命令运⾏结果,作为返回值。return后跟数值n(0-255)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java失业路线大全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值