linux脚本除号,Shell脚本编程(上)

Shell脚本编程基础

Shell 脚本基础:包含一些命令或声明并符合一定格式的文本文件

Shell 脚本用途:

1. 自动化常用命令

2. 执行系统管理和故障排除

3. 创建简单的应用程序

4. 处理文本和文件

创建Shell脚本:

首行的固定写法:

1. #!/bin/bash

2. #!/bin/sh

注:此行是告诉系统执行的时候要调用什么解释器。如果首行不写,那么执行的时候需要使用命令bash。

脚本写法:

注释写法:

#!/bin/bash

#

#Filename:XXXX.sh        脚本文件名称

#Description:xxxx        说明

#Author:xxxx             作者

#Email:xxxx@xx.xxx       联系方式

#Revision:1.0            版本

#Date:xxxxx              脚本创建日期

#Note:xxxx               注解

3c8ce6380daa33c267ccb0e2e66a02de.png

注:每一行之前最好有一个注释;脚本名称使用.sh结尾的尽量避免使用中文;#表示注释,此行不执行。

脚本的执行:

1. bash

2. sh

3. 加执行权限

1) 相对路径

2) 绝对路径

3) 放到$PATH变量指定的目录里面,直接执行(tab)

脚本调试执行:

bash -n 检查语法错误,不检查拼写错误

bash -x或sh -x 显示脚本执行的时候每一个命令具体的执行结果

变量:暂时存放数据的地方,一个具有名称的内存地址空间。

数据存储方式:1. 字符

2. 数值: 整形、浮点型

作用:1. 数据存储格式

2. 参与的运算

3.表示的数据范围

类型:

强类型(如 JAVA C#):数值型和字符型不能直接计算,除非显示把字符型转换成数值型。

弱类型(如 shell php):不会严格区分变量类型,定义变量的时候不用指定变量类型,默认字符型,如果想要计算的时候会自动帮你转换成数值型。

变量的命名规则:

1.不能使用if for bash cd ls date 关键字

2.不能以数字开头,不能使用特殊符号,只能使用数字、字母及下划线

3.见名知意:看见名字知道此文件的意义

4.建议变量使用大写

bash变量的种类:

本地变量(全局变量)  仅仅对当前shell生效

环境变量    对当前shell以及其他shell都生效 export

局部变量(私有变量)  生效范围位当前shell进程中某代码片段,通常用在函数里面,使用local

本地变量:name=’value’

可以使用引用value:

1.可以是直接字串:name=”root”

2.变量引用:name=”$USER”

3.命令引用:name=COMMAND  name=$(COMMAND)

变量引用:${name} $name

” ” :弱引用  会把双引号里面的变量替换

‘ ‘  :强引用  不会把引号里面的变量进行替换

“ : 把反引号里面的命令执行结果赋值给变量

显示已定义的所有变量: set

删除变量: unset name

注:取消变量和变量置空是两种不同概念 unset HZ

HZ=

环境变量:

变量声明、赋值:

export name=VALUE

declare -x name=VALUE

变量引用: $name, ${name}

显示所有环境变量:

env, pringtenv, export, declare -x ,set

删除: unset name

bash有许多内建的环境变量:

$PATH 命令的搜寻路径

$OLDPWD 前一个工作目录

$LANG 目前的工作语系

$BASH bash的完整路径名

$BASH_VERSION Bash的版本

$HISTCONTROL 控制指令是否存入历史文件中

$OSTYPE 显示系统类型

$MAIL 存放邮件的文件

$MAILCHECK 多久检查一下邮件

$PWD 当前路径

$SSH_tty 当前登录的tty

$SHLVL 当前shell在几层

$RANDOM 随机数

只读变量:只能声明,但不能修改和删除

声明只读变量:readonly name

declare -r name

查看只读变量: readonly -p

位置变量: 在脚本代码中调用通过命令行传递给脚本的参数

$1,$2,…: 对应第1、第2等参数,shift [n]换位置

$0: 命令本身

$*: 传递给脚本的所有参数,全部参数合为一个字符串

$@: 传递给脚本的所有参数,每个参数为独立字符串。如”$@”用「”」括起来的情况、以”$1″ “$2” … “$n” 的形式输出所有参数。

$#: 传递给脚本的参数的个数

注:$@、$*只在被双引号包起来的时候才会有差异

set — 清空所有位置变量

算数运算

1. let num=算数表达式 let r=9+9

3c8ce6380daa33c267ccb0e2e66a02de.png

2. var=$[算数表达式] r=$[9+9]

3c8ce6380daa33c267ccb0e2e66a02de.png

3. var=$((算数表达式)) r=$((9+9))

3c8ce6380daa33c267ccb0e2e66a02de.png

4. expr 8 + 3 (注意要有空格!!!)

3c8ce6380daa33c267ccb0e2e66a02de.png

5. declare -i   r=9+9

3c8ce6380daa33c267ccb0e2e66a02de.png

6. bc   计算1-100的和:echo {1..100} | tr ” ” “+” | bc

3c8ce6380daa33c267ccb0e2e66a02de.png

注: expr 8 * 8 乘号需要用\转义,除号不用

+=,  i+=3等于i=i+3

-=,  i-=3等于i=i-3

=,  i=3等于i=i*3

/=,  i/=3等于i=i/3

%=,  i%=3等于i=i%3

i++  先执行 执行完加1 (用的比较多)

++i  先加1,再执行

3c8ce6380daa33c267ccb0e2e66a02de.png

逻辑运算

true 1   false 0

1 与 1 = 1

1 与 0 = 0

0 与 1 = 0

0 与 0 = 0

1 或 1 = 1

1 或 0 = 1

0 或 1 = 1

0 或 0 = 0

与的时候 只要有一个为假 那么整个结果就是假的。

或的时候 只要有一个为真 那么整个结果就是真。

!1 = 0

!0 = 1

&& 与

|| 或

1 && 1 = 1

1 && 0 = 0

1 || 1 = 1

1 || 0 = 1

命令执行成功 我们认为是真

命令执行失败 我们认为是假

短路预算:

命令1 && 命令2

命令1 成功执行 则执行命令2

命令1 执行失败 则不会执行命令2

命令1 || 命令2

命令1成功执行,则命令2不执行

命令1执行失败,则命令2执行

命令1 && 命令2 || 命令3

如果命令1 成功执行 则执行命令2 且命令3不会执行

如果命令1 执行失败 那么命令2就不会执行,则命令3执行

如果  命令1 成功

则    命令2;

否则  命令3;

退出状态

使用$?  0代表前面一个命令执行成功

非0 代表前面一个命令执行失败

可以在脚本里面自定义退出状态

根据退出状态来判断一个命令的执行成功与否

exit [n]:自定义退出状态码

注意:脚本中一旦遇到exit命令,脚本会立即终止;终止退出状态取决于exit命令后面的数字

注意:如果未给脚本指定退出状态码,整个脚本的退出状态码取决于脚本中执行的最后一条命令的状态码

测试条件

test  测试条件

[ 测试条件 ]

[[ 测试条件 ]] 条件测试的前后要加上空格

生产环境建议使用两个中括号

数值测试:

-gt: 是否大于

-ge: 是否大于等于

-eq: 是否等于

-ne: 是否不等于

-lt: 是否小于

-le: 是否小于等于

[[ 6 > 2 ]] && echo “OK”

字符串测试

== 是否等于

>  是否大于

<  是否小于

!= 是否不等于

=~ 左边的字符串是否包含右边指定的字符串

注:此表达式一般用于[[ ]]中;扩展的正则表达式

-z 测试字符串是否为空,空为真,不空为假

-n 测试字符串是否不为空,不空为真,空为假

注:用于字符串比较时的用到的操作数都应该使用引号

原创文章,作者:木,如若转载,请注明出处:http://www.178linux.com/73306

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值