shell脚本模式

”所谓没有规矩不成方圆 下面说一下shell脚本的一些固定模式 “

一、脚本的基本规则

1、先说文件名 简明扼要 尽量见名之意 第一位数禁止用数字

2、文件名要以 “.sh ”结尾(注意有个点)

3、脚本第一行必须包括shell生命序列 “#!” 例“#!/bin/bash” 给予执行权限 在命令行上指定脚本的绝对路经或相对路经(第一行可写可不写 但是作为一个有素养的运维人 必须写!!)

4、接着开始写注释内容:文件名、功能描述、作者及联系方式、最后修改日期、版本号以及一些说明。

二、脚本编程逻辑处理方式

1、顺序执行

2、循环执行

3、选择执行

三、接下来就是堆命令的过程

1、变量命名不能使用程序中的保留字:例 if 、for。只能使用字母数字及下划线,同样不能使用数字开头

2、位置变量 (这是一个很方便的技能)

$0、        $1、$2、$3...                      $#

文件名     传递的第一、二、三..个参数         传递给脚本的参数个数

$*                                                                [email protected]

传递给脚本的所有参数,全部参数合为一个字符串    传递给脚本的所有参数,每个参数为独立字串    注:“$*” 和 “[email protected] ”不容易分清区别 只有被双引号包起来的时候才会看出来差异

set 清空所有位置变量

3、算数运算

几个运算符号 : +、-、*、/、%取模(取余)、**乘方(运算符号有些场景需要转义)

两个算术例子 固定格式

*例: let r=9+9

查看运算结果 echo $r

*例:r=$((9+9))

查看运算结果 echo $r

$RANDOM 随机生成一串数字(0-32767)之内的

*例 echo $[$RANDOM%50]

取0-49之间的任意一位数

4、增强型赋值

增强型运算符号 +=、-=、*=、/=、%=

*例 let count+=3

自加3后赋值

*例 let var++

默认自加1

5、bash的测试类型                      字符串测试

-gt:是否大于                                   == ; 是否等于

-ge:是否大于等于                             >   : ascii码是否大于asscii

-eq:是否等于                                  <    :是否小于

-ne:是否不等于                               != :是否不等于

-lt:是否小于                                    =~:左侧字符串是否能够被右侧的PATTERN所匹配

-le:是否小于等于

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

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

6、使用read命令来接受输入

-p: 输出显示到屏幕

-s:静默输出(一般密码之类的会用到)

例: reda -p "Enteer a filename:" FILE 注意FILE前面一定要加空格

7、字符串切片

先设置一个变量 myname="/usr/sbin/ntpdate"

*字符串长度测试

echo ${#maname}

1

查看设置的字符串长度 后面会显示总共17个 “/”也算

*变量高级操作

例:echo ${myname#/*/}

sbin/ntpdate

*一个“#”号由前面对比 删除匹配到最短的

例:echo ${myname##/*/}

ntpdate

*两个“#”号由前面对比 删除匹配到最长的

例:echo ${myname%/*}

/usr/sbin

*一个“%”由后面对比 删除匹配到的最短的

例:echo ${myname%%/*}

(空)

两个“%”由后面对比 删除匹配到的最长的

8、流程控制(if、for、while)

**if语句格式及举例

if (command1条件1);then

如果条件1执行失败执行条件2 例(1<1)是错的

(if-flase失败)执行动作

elif (command2条件2)

条件2执行失败 例(1>1)

(if-flase)执行动作

else

(则直接执行条件3可以不用加执行条件 例(1=1)

(if-true成功)执行动作

fi(结束符)

**for语句格式及示例

for i in {1..10};do

给i设置变量等于1~10 (切记“i”不能加$符号)

useradd user${i}

创建十个用户 user1、user2、user3.....

done(结束符)

**while语句格式及示例

while true;do

如果条件为真 则继续执行

echo {1..100}

显示1~100 重复循环执行 除非手动停止

done 结束符

四、总结小技巧

*如果命令太长可以用“\”分行来写

*shell脚本不要求缩进,但是要养成缩进的好习惯

*可以把定义的环境变量专门写到一个文件里,避免修改系统文件

*关键的操作须有日志输出,专门记录操作的成功或者失败以及执行的时间

*脚本内很可能包含敏感信息,如果公开之前一定要确认是否已经删除

*尽量给每条语句或者代码的执行给一个执行结果状态

*建议在脚本执行的开始重读下/etc/profile 推荐使用source 或者"."

*脚本内定义的变量或者文件名尽量使用“驼峰写法”见名之意避免使用a、b、c类似的定义

*另外写脚本有三个技巧多写多练 、多写多练、多写多练,就这些。

时间: 2024-10-29 19:06:21

shell脚本模式的相关文章

如何在 Shell 脚本中执行语法检查调试模式

我们开启了 Shell 脚本调试系列文章,先是解释了不同的调试选项,下面介绍如何启用shell调试模式. 写完脚本后,建议在运行脚本之前先检查脚本中的语法,而不是查看它们的输出以确认它们是否正常工作. 在本系列的这一部分,我们将了解如何使用语法检查调试模式.记住我们之前在本系列的第一部分中解释了不同的调试选项,在这里,我们将使用它们来执行脚本调试. 启用 verbose 调试模式 在进入本指导的重点之前,让我们简要地探索下 verbose 模式.它可以用 -v 调试选项来启用,它会告诉 shel

shell脚本学习笔记 (sed的高级用法----模式空间和保持空间)

前段时间在学习shell脚本,上次有提到sed的模式空间和保持空间概念,但是一直没有研究好,这两天研究了一下,所以将它发出来,不是很全面,仅仅供大家参考一下. 保持空间sed在正常情况下,将处理的行读入模式空间,脚本中的"sed command(sed命令)"就一条接着一条进行处理,直到脚本执行完毕.然后该行被输出,模式被清空:接着,在重复执行刚才的动作,文件中的新的一行被读入,直到文件处理完毕. 模式空间可以比喻为一个生产线,而保持空间则可以被比喻为仓库,这个比喻希望可以帮助大家理解

用shell脚本实现linux系统上wifi模式(STA和soft AP)的转换

转载请注明出处:http://blog.csdn.net/hellomxj1/ 功能:在linux系统上实现wifi STA与AP功能的转换 实现成果:1.添加wifi密码账户add_wifi_account: 2.wifi两种模式启动的脚本wifi_start: 3.帮助信息README_WIFI_START: 具体实现过程如下: 添加wifi密码账户add_wifi_account 1 #!/bin/sh 2 3 echo "Add Wifi Account ..." 4 5 if

mysql自动备份脚本,MySQLdump+shell+crontab模式(附备份记录日志)

1.MySQL备份脚本 [[email protected] ~]# mkdir -p /root/data/backup #备份文件存放于此路径下 [[email protected] ~]# vim /root/mysql.back.sh #!/bin/bash backup_path="/root/data/backup" user="root" passwd="123456" dbname="test" host=&q

shell脚本加密

#shc是一个专业的加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件,这个办法很好的解决了脚本中含有IP.密码等不希望公开的问题.http://www.datsi.fi.upm.es/~frosal/sources/ shc的官网下载地址 wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgztar -xf shc-3.8.9.tgzcd shc-3.8.9mkdir -pv /usr/local

shell脚本编程的选择分支结构

选择执行结构: if语句单分支结构:如果条件为真,则执行then后的命令,否则,不做任何操作: if CONDITION :then STATEMENT fi 或 if CONDITION ; then STATEMENT1 STATEMENT2 ... fi 注意:想要执行then后面的STATEMENTS,前提条件是CONDITION部分为真: if语句的双分支结构:如果条件为真,就执行then后面的命令:否则就执行else后面的命令: if CONDITION ; then STATEME

shell脚本编程的一些好习惯

shell脚本编程的一些好习惯 1.命名规则 脚本命名以.sh结尾,名称尽量见名之意.以下是几种可供参考的脚本命名风格.通过以下清新脱俗的风格,读者能够很easy的明白脚本的作用.         clearlog.sh          ClearLog.sh          clearSql.sh         snmp_install.sh         Monitor.sh 2.脚本信息 为脚本加入生动的信息,比如脚本功能的描述,作者,时间,版本信息等.     #!/bin/ba

【Shell】使用Shell脚本发布项目

第一次写Shell脚本,没经验,是直接写呢,还是要走流程( ̄▽ ̄)~* ----------------------------------------------------------------------- 总的来说分三步,下面跟我一起做 ----------------------------------------------------------------------- 第一步:先创建一个文件 touch public.sh 第二步:编写脚本 #!/bin/bash echo

shell脚本前奏

一.正则表达式: 正则表达式(Regular Expression,简称RE)就是由普通字符(例如字符a到z)以及特殊字符(称为元字符)组成的文字模式.即一种匹配模式 常用正则表达式: 1. .代表任意单个字符,如:/l..e/,le中间可以是任意两个字符. 2. ^:以...开始的行 3. $:以....结束的行   "^$"就表示空行 4. [...]:匹配括号中的字符之一 "^"如果出现在[]的起始位置,表示否定,在其他位置是普通字符.(即匹配不在此括号中的任