shell 简单脚本编程

shell脚本编程
编译器,解释器

编程语言: 机器语言,汇编语言,高级语言

静态语言:编译型语言
强类型(变量)
事先转换成可执行格式
C,C++,JAVA,C#

动态语言:解释型语言,on the fly
弱类型
边解释边执行
ASP,ASP.NET,PHP,SHELL,PYTHON,PERL

shell: 弱类型编程语言
强类型: 变量在使用前,必须事先声明,甚至需要初始化
弱类型: 变量用时声明,甚至不区分类型

bash变量类型:
环境变量:作用域为当前shell进程及其子进程
export name=value
或者name = value
export name
"导出"
脚本在执行时会启动一个子shell进程:
命令行中启动的脚本会继承当前的shell环境变量
系统自动执行的脚本(非命令行启动)就需要自我定义需要的各环境变量

本地变量(局部变量):
引用变量:${变量名},括号可省略。变量替换 强引用 用"" 双引号
set name=value : 作用域为整个bash进程
局部变量:
local name=value ,作用域为当前代码段:

撤销变量
unset name

查看当前shell 中的变量: set(查看所有变量)

查看当前shell 中得环境变量
printenv
env
export

位置变量
$1, $2....
特殊变量(系统变量)
$? : 上一个命令执行状态返回值;

程序执行:可能有两个状态返回值
程序执行结果
程序返回代码 (0-255)
0 : 正确执行
1-255:错误执行
1,2,127为系统预留执行返回代码

/dev/null : 软件设备, bit bucket , 数据黑洞

脚本:
命令的堆砌,按照实际需要,结合命令流程控制机制实现的源程序
shebang: 魔数
#/bin/bash 指明执行的脚本执行路径
# 注释行,不执行

变量追加
name=aaaa
echo $name
name=$name:bbb
echo name
完成变量的内容追加,类似数组添加元素

条件判断:
bash中,如何实现条件判断?
条件测试类型:
整数测试:
字符测试:
文件测试:

条件测试的表达式:
[ expression ] : []两端必须要有空格 命令测试法
[ [expression] ] 关键字测试法
test expression

如:
INT1=55
INT2=65
[ $INT1 -eq INT2 ]
[ [ $INT1 -eq INT2 ] ]
test $INT1 -eq INT2

整数比较:
-eq : 是否相等 $A -eq $B
-ne : 是否不等: 不等为true,否则为false。
-gt : 大于
-lt : 小于
-ge : 大于或等于
-le : 小于或等于

命令间的逻辑关系:
逻辑与: &&
第一个条件为假时,第二条件不再判断,最终结果已有:
第一个条件为真时,第二条件必须判断

逻辑或: ||

编程风格——>> 变量名称:
1 只能包含字母,数字和下划线,并且不能以数字开头。
2 不能跟系统中已有的环境变量重名。
3 最好见名知意

条件判断: 控制结构
单分支if 语句:

if 判断条件; then
statement 1
statement 2
statement 3
...
fi

双分支if 语句:
if 判断条件;then
statement 1
statement 2
statement 3
..
else
statement 4
statement 5
...
fi

shell中的算术运算:
A=3,B=6
1 let 算术运算表达式
let C =$A+$B
2 $[ 算术运算表达式]
C =${$A+$B}

3 $((算术运算表达式))
C = $(($A+$B))

4 expr 算术运算表达式, 表达式中各操作数及运算符之间要有空格,并且要使用命令引用
C = `expr $A + $B `

文件测试:
- e FILE(文件名或者文件路径) : 测试文件是否存在 isexit
- f FILE : 测试文件是否为普通文件
- d FILE :测试指定路径是否为目录
- r FILE : 测试当前用户对指定路线是否可读。
- w FILE : 测试当前用户对指定路线是否可写。
- x FILE : 测试当前用户对指定路线是否可执行。

[ -e /etc/inittab ]

测试脚本是否有语法错误
bash - n 脚本
bash - x 脚本 逐步展示执行过程

定义脚本退出状态码:
exit : 退出脚本(后面跟上需要的状态码)
如果脚本没有明确定义退出状态码,那么最后执行的一条命令的突出码即为脚本的退出码。
exit 0-255

bash的变量类型
本地变量(局部变量)
环境变量
位置变量:
$1,$2.... (参数位置)
shift: 参数轮替,后面跟数字,实现轮替的步进
./file.sh /etc/inittab /etc/test
$1: /etc/inittab
$2: /etc/test
特殊变量:
$? : 上一条命令的退出状态码
$# : 参数的个数
$* : 参数列表
[email protected] : 参数列表

原文地址:https://www.cnblogs.com/thelovelybugfly/p/10777219.html

时间: 2024-11-06 22:44:04

shell 简单脚本编程的相关文章

SHELL 简单脚本 更新中

1.服务器需要每周17:30清理FTP服务器的公共共享目录,先检查/var/ftp/pub/目录,将其中所有子目录及文件的详细列表.当前时间信息追加保存到/var/log/pubdir.log日志文件中,然后清空该目录. 添加计划任务,实现每周五计划执行脚本 2.数据库服务器需要每隔3天对数据库目录做一次备份,统计/var/lib/mysql 目录占用的空间大小.查看当前日期,并记录到临时文件夹/tmp/dbinfo.txt 中:将/tmp/dbinfo.txt文件./var/lib/mysql

SHELL简单脚本编写

vim /root/7.sh #!/bin/bash X=$[RANDOM%10+1] read -p "[1-10]你猜:" cai if [ $cai -eq $X ];then echo 恭喜你猜对了 exit elif [ $num -gt $X ];then echo 猜大了 else echo 太小了 fi vim /root/6.sh #!/bin/bash read -p "请输入一个软件包:" b b=$(rpm -qa | grep "

一些shell简单脚本

(1)批量解析域名 把域名保存在dns.txt文件, ping 一次 ping -c1 打印第二行 sed -n '2p' 打印ip那个字段 第4段 awk '{print $4}' 删除掉末尾的:号,删除最后一个字符,用sed 替换为空  sed 's/.$//' for i in `cat dns.txt`; do ping -c 1 $i|sed -n '2p'|awk '{print $4}'|sed 's/.$//'; done;

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

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文件中的每一行,且将

Linux 的shell脚本编程

shell脚本编程 程序:指令+数据 程序编辑风格:             过程式:以指令为中心,数据服务于指令             对象式:以数据为中心,指令服务于数据 shell程序:提供了编程能力,解释执行 计算机:运行二进制指令 编程语言: 低级:汇编语言 高级:编译:高级语言-->编译器-->目标代码 java,c#,c,c++ 解释:高级语言-->解释器-->机器代码 shell,per,python 编程逻辑处理方式:           顺序执行      

Shell脚本编程30分钟入门

什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_tut for ((i=0; i<10; i++)); do touch test_$i.txt done 示例解释 第1行:指定脚本解释器,这里是用/bin/sh做解释器的 第2行:切换到当前用户的home目录 第3行:创建一个目录shell_tut 第4行:切换到shell_tut目录 第5行:循环条件,一共循环10次 第6行:创建一个test_1…10.txt文件 第7