脚本编程基本功

脚本编程基本功

一、脚本基础

1、格式要求:首行shebang机制;#!/bin/bash

2、#注释(日期、联系方式、作者、目的、文件名)

3、检测脚本中的语法错误 bash -n /path/to/some_script

4、调试执行 bash -x /path/to/some_script

二、变量

1、Shell中变量命名法则:不能使程序中的保留字:例如if, f等;只能使用数字、字母及下划线,且不能以数字开头;见名知义 ;统一命名规则:驼峰命名法,大驼峰和小驼峰。

2、Shell中命名建议规则:变量名大写;局部变量小写;函数名小写;用英文名字,并体现出实际作用。

3、变量种类:局部变量、环境变量、本地变量、位置变量和特殊变量。

  ① 局部变量:只能在当前进程生效,set列出所有已定义变量。删除变量
unset name。

   `` $() 命令引用; ${} $ ‘’ “” 变量引用

   X=20;y=$x;x=30;echo $y;结果20

   Pstree -p查看当前进程编号;$BATHPID当前进程;$PPID上一级进程

  ② 环境变量:export;declare -x ;列出所有环境变量:env;删除变
量unset name。

   子进程改变量传不到父进程,父进程可以传给子进程 $_ ,$SHLVL

  ③ 只读变量:readonly;declare -r;列出所有只读变量readonly -p;只能声明,不能修改和删除。

  ④ 位置变量:在脚本代码中调用通过命令行传递给脚本的参数。Set -- 清空所有位置变量。

   [email protected] $* 只在被双引号包起来的时候才会有差异。

   $1, $2, ... 对应第1、第2等参数, ${10}超过十加花括号。

   $0 命令本身

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

   [email protected] 传递给脚本的所有参数,每个参数为独立字符串

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

  ⑤ 本地变量函数用

  ⑥ 特殊变量:特殊变量:$?, $0, $*, [email protected], $#,$$

4、()开启子进程,临时改变,执行完退出;{}不开子进程;(umask 066;touch f1)

5、exit [n]:自定义退出状态码;脚本中一旦遇到exit命令,脚本会立即终止;终止退出状态取决于exit命令后面的数字;如果未给脚本指定退出状态码,整个脚本的退出状态码取决于脚本中执行的最后一条命令的状态码。

三、 算数运算

1、+, -, *, /, %取模(取余), **(乘方),乘法符号有些场景中需要转义 。

2、b.X=10;y=20;①z=x+y;结果为x+y;②Z=$x+$y;结果10+20;③let z=x+y;结果为30,不用加$,可以加$;④z=[10020],结果2000;⑤z=[x20],结果200;⑥z=((x*20)),结果200;

3、expr 3 * 5 ,注意空格,乘号转译;echo2+3|bc

4、declare -i n;n=2+3。不支持小数。

5、id=10;let id++ 结果11 ;id++ = id+1 id++先取id再加,++id先加再取id

四、逻辑运算

1、与:1 只有全为1,结果为1,只要有一个是0,结果就是0

2、或:只要有一个1,结果为1,全为0,结果才为0

3、短路与:cmd1 && cmd2 :如果cmd1 结果为失败,不执行cmd2 ,如果cmd1 成功,执行cmd2

4、短路或:cmd1 || cmd2: 如果cmd1 成功,不执行cmd2,如果cmd1失败,执行cmd2

5、cmd1 && cmd2 || cmd3

##五、条件测试

1、测试命令:test EXPRESSION ;[ EXPRESSION ];[[ EXPRESSION ]];注意:EXPRESSION前后必须有空白字符。注意:变量在中括号里加双引号。

2、数值测试: -gt 是否大于 ;-ge 是否大于等于; -eq 是否等于; -ne 是否不等于; -lt 是否小于;-le 是否小于等于。

3、字符串测试:= 是否等于 ;> ascii码是否大于ascii码 ;< 是否小于;!= 是否不等于 ;=~ 左侧字符串是否能够被右侧的PATTERN所匹配。

  注意: 此表达式一般用于[[ ]]中;扩展的正则表达式 ;-z "STRING“ 字符串是否为空,空为真,不空为假;-n "STRING“ 字符串是否不空,不空为真,空为假;用于字符串比较时的用到的操作数都应该使用引号。

4、存在性测试 :-a FILE:同 -e ;-e FILE:文件存在性测试,存在为真,否则为假。

5、存在性及类别测试:-b FILE:是否存在且为块设备文件。-c -d -f -h -p -S。

6、权限测试:-r FILE:是否存在且可读。-w -x -u -g -k

7、文件大小测试:-s FILE: 是否存在且非空。

8、文件是否打开:-t fd: fd 文件描述符是否在某终端已经打;-N FILE:文件自从上一次被读取之后是否;-O FILE:当前有效用户是否为文件属主; -G FILE:当前有效用户是否为文件属组。

9、组合测试:EXPRESSION1 -a EXPRESSION2 并且 EXPRESSION1 -o EXPRESSION2 或者 ;! EXPRESSION 必须使用测试命令进行,[[ ]]不支持。

六、 Read

1、read来把输入值分配给一个或多个shell变量

2、-p 指定要显示的提示;

3、s 静默输入,一般用于密码;

4、-n N 指定输入的字符长度N ;

5、-d ‘字符’ 输入结束符;-t N TIMEOUT为N秒 read 从标准输入中读取值,给每个单词分配一个变量。

6、所有剩余单词都被分配给最后一个变量 read -p "Enter a filename: " FILE

原文地址:https://blog.51cto.com/14322550/2400364

时间: 2024-08-02 13:33:26

脚本编程基本功的相关文章

shell脚本编程学习笔记(1)

在linux上编程,离不开shell,计划好好看看shell编程,并在这里做些笔记以供有相同兴趣的人分享,主要参考<shell脚本学习指南>. 学习shell脚本编程之前,需要了解脚本编程语言和编译型语言的概念. 一般很多中型.大型的程序是用编译型语言写成的,比如C.C++.Java等.这类程序从源代码编译成目标代码,直接通过计算机执行.编译型语言执行效率比较高,大多运作于底层,处理的是字节.整数.浮点数等机器层级的对象,因此实现一个具体的功能,比如"将一个目录里的所有文件复制到另外

Shell脚本编程知识点总结及范例

 一:关于语言 1)编译性语言 编译型语言多半运作于底层,所处理的是字节.整数.浮点数或其它及其机器层经的对象.处理过程为:源程序--预处理--编译--汇编--链接,编译性语言为静态语言. 2)解释性语言 解释性语言读入程序代码并将其转化为内部的形式加以执行.处理过程:解释性(文本文件)-解释器去读取并执行.解释性语言为动态语言. 二:基础 变量类型 linux脚本中的变量不需要事先声明,而是直接定义使用(这点不同于其他高级编程语言中变量的使用)bash变量类型分为本地变量和环境变量. 本地变量

Linux01-BASH脚本编程之信号捕捉及任务计划53

一.脚本编程知识点 1.获取变量中字符的长度:${#VARNAME} 2.变量赋值: a)${parameter:-word}:如果parameter为空或未定义,则变量展开为"word":否则,展开为parameter的值: 如:A=3 echo ${A:-30} unset A echo ${A:-30} b)${parameter:+word}:如果parameter为空或未定义,不做任何操作:否则,则展开为"word"值: 如:echo ${A:+30} A

shell脚本编程——流程控制

shell脚本编程--流程控制 目   录 一. if 二. case 三. for 四. while 五. until 六. 综合应用 一.if 1.语法 (1)单分支 if  判断条件:then fi (2)双分支 if 判断条件; then 条件为真的分支代码 else 条件为假的分支代码 fi (3)多分支 if 判断条件1; then 条件为真的分支代码 elif 判断条件2; then 条件为真的分支代码 elif 判断条件3; then 条件为真的分支代码 else 以上条件都为假

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脚本编程之基础篇(二) ============================================================================== 概述: ============================================================================== 退出状态 ★进程使用退出状态来报告成功或失败 ◆0 代表成功,1-255代表失败 ◆$? 变量保存最近的命令退出状态 (查看:echo $?)

Linux系统shell脚本编程——生产实战案例

Linux系统shell脚本编程--生产实战案例     在日常的生产环境中,可能会遇到需要批量检查内网目前在线的主机IP地址有哪些,还可能需要检查这些在线的主机哪些端口是开放状态,因此依靠手工来检查是可以实现,但比较费时费力,所以需要结合shell脚本来实现批量检查的功能,那么今天就来做个小小的实验. 1.开发脚本前准备 一般大家都知道,测试主机是否在线,常用的命令无非就是ping.nmap,因此,首先找一个地址来测试下ping命令的效果 [[email protected] scripts]

Linux中的shell脚本编程——函数

概述: 本章节将总结while,for循环语句的特殊用法,在不同的场景当中,更能发挥其功能和价值.除此之外,还会介绍一种特殊的循环语句select语句,实现菜单的作用.最重要的是讲解shell脚本编程中函数的用法.这些内容都要熟练掌握. 一.循环语句的特殊用法: 1.while循环的特殊用法(遍历文件的每一行): □语法:while read line; do 循环体 done < /PATH/FROM/SOMEFILE □意义:依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将