丽水网站开发,wordpress漫画商城,一件代发货源app,可以免费建立网站吗一. 了解编程
1.程序编程风格
面向过程语言
开发的时候 需要一步一步执行 问题规模小#xff0c;可以步骤化#xff0c;按部就班处理 以指令为中心#xff0c;数据服务于指令 C#xff0c;shell
面向对象语言
开发的时候 将任务当成一个整体 将编程看成是一个…一. 了解编程
1.程序编程风格
面向过程语言
开发的时候 需要一步一步执行 问题规模小可以步骤化按部就班处理 以指令为中心数据服务于指令 Cshell
面向对象语言
开发的时候 将任务当成一个整体 将编程看成是一个事物对外界来说事物是直接使用的,不用关心事物内部的情况。而编程就是设置事物能够完成功能。 类是抽象的概念是万事万物的抽象是一类事物的共同特征的集合 对象是类的具象是一个实体 问题规模大复杂系统 以数据为中心指令服务于数据 javapythongolang 等
2. 处理逻辑
顺序执行程序按从上到下顺序执行
选择执行程序执行过程中根据条件的不同进行选择不同分支继续执行
循环执行程序执行过程中需要重复执行多次某段语句已知次数 已知条件 死循环
二 .Shell脚本的编程概述
1.shell脚本简介
1.1 基本概念
Shell是一个命令解释器它在操作系统的最外层负责直接与用户进行对话把用户的输入解释给操作系统并处理各种各样的操作系统的输出结果输出到屏幕反馈个用户这种对话方式可是交互也可是非交互的我们所输入的命令计算机是不是别的这是就需要一种程序来帮助我们进行翻译编号才能计算机能识别的二进制程序同时又把计算机生成的结果返回给我们。
1.2 应用场景 重复性操作 交互性任务 批量事务处理 服务运行状态监控 定时任务执行
1.3 作用 shell是一个特殊的应用程序它介于操作系统内核和用户之间充当了一个“命令解释器”的角色负责接收用户输入的操作指令并进行解释将需要执行的操作传递给内核执行并输出执行结果。 1.4 linux中有哪些shell
查看本机shell种类 解释
- sh:已经被bash替换
- bash:基于gun的框架下发展的shell
- csh:类似c语言的shell
- tcsh:整合了csh提供了更多功能bash /bin/bash是目前大多数Linux 版本采用的默认shell
2.shell 脚本的编写规范和执行方法 2.1 构成
解释器 脚本是用什么语言写的注释 解释语句的含义执行语句
脚本申明(解释器) :若第一行为“!/bin/bash表示此行以下的代码语句是通过/bin/bash程序来解释执行#!/bin/bash为默认解释器。还有其它类型的解释器
比如 #!/usr/bin/python. #!/usr/bin/expect.注释信息:以“#开头的语句表示为注释信息被注释的语句在运行脚本时不会被执行。可执行语句:比如echo命令用于输出之间的字符串2.2 如何执行
使用路径执行 需要加执行权限直接使用解释器 不需要权限source 和 . 执行 不需要执行权限 #法一指定路径的命令要求文件必须有x权限
[rootlocalhost ~]#chmod x /test/first.sh
[rootlocalhost ~]#/test/first.sh#法二指定Shell来解释脚本不要求文件必须有x权限。
[rootlocalhost ~]#bash first.sh #法三source 脚本路径执行shell脚本
[rootlocalhost ~]#source first.sh
[rootlocalhost ~]#. first.sh 使用前两种方式执行脚本会开启子bash 环境去执行脚本
使用source 和 . 会影响当前的bash环境 不推荐使用 前两种使用的子shell 不影响当前环境
2.3 脚本文件命名要求
区分大小写不能使程序中的保留字和内置变量:如: if, for hostname只能使用数字、字母及下划线且不能以数字开头注意:不支持短横线“-和主机名相反不要使用内置的变量使用英文尽量使用词义通俗易懂PATH驼峰StudentFirstName小驼峰studentFirstName·下划线: student_name2.4 脚本错误
1.命令错误命令出错不会影响下面的操作下面的命令继续2.语法错误会影响接下来的命令继续3.逻辑错误只能自己去筛查查找代码的正确bash -n 脚本名称 不在当前目录下加绝对路径 检查语法错误
bash -x 脚本名称 不在当前目录下加绝对路径 检查逻辑错误
命令出错不影响下面的操作 语法错误下面的操作不继续 查找代码是否正确 总结 语法错误会导致后续的命令不继续执行可以用bash -n 检查错误提示的出错行数不一定是准确的 命令错误默认后续的命令还会继续执行用bash -n 无法检查出来 可以使用 bash -x 进行观察 逻辑错误只能使用 bash -x 进行
2.5 出错解决
2.5.1 set -e
在脚本前面输入 set -e 一旦出错立即停止 2.5.2 set -u
变量不存在就不让执行 三.重定向与管道操作
1.重定向
1.1 交互式硬件设备
类型设备文件文件描述编号默认设备标准输入/dev/stdin0键盘标准输出/dev/stdout1显示器标准错误输出/dev/stderr2显示器 1.2 重定向操作
类型操作符用途重定向输入从指定的文件读取数据而不是从键盘输入重定向输出1将输出结果保存到指定的文件覆盖原有内容将输出结果追加到指定的文件尾部标准错误输出2将错误信息保存到指定的文件覆盖原有内容2标准错误输出结果追加到指定的文件尾部混合输出无论对错都可以重定向将标准输出、标准错误的内容保存到同一个文件中
实操
① 将123 重定向输出到 mima.txt 文件中然后将 mima.txt 的内容重定向输入给用户 zhangsan 的密码,从mima.txt 文件中取密码需要注意SELinux 会影响此命令执行若执行失败可尝试关闭SELinuxsetenforce 0 ② 覆盖 和追加 ③ 输出错误信息 ④ 混合输出
12 把标准输出重定向到标准错误21 把标准错误重定向到标准输出
把标准输出重定向到错误输出里面 把错误输出重定向到标准输出里面 2.多行重定向 可以帮助脚本开发人员不必使用临时文件来构建输入信息 而是直接就地生产出一个文件并用作命令的标准输入。 EOF 也可以用其它字母只要求一样就可以 3.管道
管道操作符“|” 将管道符号“|左侧的命令输出的结果作为右侧命令的输入(处理对象)同一行命令中可以使用多个管道. 四. Shell脚本变量
1 shell 变量的作用
用来存放系统和用户需要使用的特定参数值变量名使用固定的名称由系统预设或用户定义变量值能够根据用户设置、系统环境的变化而变化
2. shell 变量的类型 自定义变量:由用户自己定义、修改和使用 特殊变量:环境变量只读变量位置变量预定义变量
2.1 自定义变量
① 定义新的变量
格式变量名变量值 ② 查看定义的变量的值
格式echo $变量名 ③ 取消变量
格式echo 变量名 ④ 追加变量 格式变量名追加值 临时添加变量 永久添加需要写入 /etc/profile 2.2 特殊符号
双引号 弱引用 可以识别变量单引号 强引用 不能识别变量{ } 定义变量名的范围 反撇 调用命令的执行结果与 $() 功能一样 2.3 变量的命名要求 区分大小写 不能使程序中的保留字和内置变量如if, forhostname test 只能使用数字、字母及下划线且不能以数字开头注意不支持短横线 “ - ”和主机名相反 不要使用内置的变量使用英文尽量使用词义通俗易懂PATH 大驼峰 StudentFirstName 小驼峰 studentFirstName 下划线 student_name 2.4 read -p
交互式的输入变量值然后使用变量 2.5 export 变量作用范围
默认情况下新定义的变量只在当前的shell环境中有效因此称为局部变量当进入子程序或新的shell环境中局部变量将无法再起作用。
可以通过内部命令export将指定的变量为全局变量使用户定义的变量在所子shell环境中可以继续使用
格式
export 变量名
export 变量名变量值 这时候我们需要用到 export ,将局部变量变成全局变量 方式一
方式二 2.6 expr 整数变量的运算
运算符 加法 、 - 减法 、 \* 乘法 、 / 除法 、 % 取余
常见的表达式
(1)expr 变量1 运算符 变量2(2) let var算术表达式(3) ((var算术表达式)) (4) var $[算术表达式](5) var expr 算术表达式 (6) echo 算术表达式 | bc
这些操作都是一个意思的不同表达方式 2.7 随机数生成器
random 随机数 取值范围0~32767 制作一个学号点名器
假如班上有50名学生 2.8 颜色生成 echo -e 启用下列反斜杠转义的解释
随机生成颜色 2.9 提取系统信息脚本 #! /bin/bashhostifconfig ens33|grep netmask|tr -s |cut -d -f3
namehostname
cpulscpu|grep 型号名称|tr -s |cut -d -f2-8
kuname -r
oscat /etc/redhat-release
disklsblk|grep disk|tr -s |cut -d -f4
memfree -h|grep Mem|awk {print $2}echo -e \E[1;35m------------------------system info -------------------------\E[0mecho 主机名: $name
echo ip地址: $host
echo cpu型号: $cpu
echo 内核版本: $k
echo 系统类型: $os
echo 磁盘大小: $disk
echo 内存大小: $memecho -e \E[1;35m----------------------- end ------------------------------\E[0m3. 特殊的shell变量
3.1 环境变量 由系统提前创建用来设置用户的工作环境 可以使用env查看环境变量 $USER 表示用户名称 $HOME 表示用户的宿主目录 $LANG 表示语言和字符集 $PWD 表示当前所在工作目录 $PATH 表示可执行用户程序的默认路径 配置文件 /etc/profile全局生效作用于所有用户 ~/.bash_profile当前用户环境用户独立的配置文件修改这个文件只作用于当前用户可以用来长期变更或设置环境变量 给PATH可执行程序的默认搜索路径里面添加一个路径 将自建路径添加到默认可执行程序里面并且给他赋于执行权限这样不再需要输入绝对路径了 3.2 只读变量
readonly 命令用于定义只读shell变量和shell函数readonly命令的选项-p可以输出显示系统中所有定义的只读变量。 重启 shell 环境可以取消
3.3 位置变量 当执行命令行操作时第一个字段表示命令名或脚本程序名其余的字符串参数按照从左到右的顺序依次赋值给位置变量。 $nn为数字$0代表命令本身1~9代表第一个到第九个参数十以上的参数需要使用大括号表示比如第十个参数为 ${10} 10以上需要加 { } 3.4 预定义变量
$*表示所有位置参数的内容看成一个整体返回 返回所有$表示所有位置参数的内容分割成n份每份作为一个独立的个体返回 返回所有$?表示前一条命令执行后的返回状态返回值为 0 表示执行正确返回任何非 0值均表示执行出现异常$#表示命令行中位置参数的总个数$$当前bash的进程id$!后台任务最后一个id$0表示当前执行的脚本或程序的名称 当前脚本的名字 $? 表示前一条命令执行后的返回状态返回值为 0 表示执行正确返回任何非 0值均表示执行出现异常 $0 表示当前执行的脚本或程序的名称 当前脚本的名字 $$ 当前bash的进程id $# 表示命令行中位置参数的总个数 区别$*和$
$* 1-26 当成一个整体
$ 1-26 $1-$26独立的个体