Shell编程规范及变量

Shell编程 shell编程 阅读详情

目录

一、Shell脚本编程概述

1.1.1Shell基本概念

1.1.2Shell脚本应用场景

1.1.3Shell作用——翻译官

1.1.4linux中有哪些Shell 

1.1.5 为什么系统上合法的Shel1要写入/etc/she1ls这个文件

1.1.6 用户什么时候可以取得shell来工作?用户默认会取得哪一个shell?

1.2Shell编程规范

1.2.1编写脚本规范

1.2.2Shell脚本执行方法

 1.2.3命名要求

1.2.4脚本错误

1.3管道与重定向

1.3.1管道

 1.3.2重定向

二、Shell脚本变量 

2.1Shell变量的作用

2.2Shell变量的类型

2.2.1自定义变量

2.2.2变量作用范围

 2.3整数变量的算术计算

2.4环境变量 

2.5只读变量

 2.6位置变量

2.7预定义变量 

 2.8使用awk提取IP地址


一、Shell脚本编程概述


1.1.1Shell基本概念


将要执行的命令按顺序保存到一个文本文件;

给该文件可执行权限;

可结合各种Shell控制语句以完成更复杂的操作。

1.1.2Shell脚本应用场景


重复性操作

交互性任务

批量事务处理

服务运行状态监控

定时任务执行

1.1.3Shell作用——翻译官


       shell是一个特殊的应用程序,它介于操作系统内核和用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。

1.1.4linux中有哪些Shell 

1.1.5 为什么系统上合法的Shel1要写入/etc/she1ls这个文件

因为系统某些服务运行过程中,会去检查用户能够使用的Shell,而这些shell的查询就是借由/etc/shells这个文件。

1.1.6 用户什么时候可以取得shell来工作?用户默认会取得哪一个shell?

当用户登录的时候,系统就会给我一个shell让我来用,而这个登录取得的Shell就记录在/etc/passwd这个文件内

1.2Shell编程规范

1.2.1编写脚本规范

脚本申明(解释器) :若第一行为“!/bin/bash",表示此行以下的代码语句是通过/bin/bash程序来解释执行,#!/bin/bash为默认解释器。还有其它类型的解释器,比如# !/usr/bin/python. #! /usr/bin/expect.

.注释信息:以“#"开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行。

可执行语句:比如echo命令,用于输出”"之间的字符串

如果想要把文本字符串和命令输出显示在同一行中,可以使用echo语句的 -n 参数。
 

 eg:

1.2.2Shell脚本执行方法

#法一:指定路径的命令,要求文件必须有x权限

[root@localhost ky22]# chmod +x /ky22/firstshell.sh 
[root@localhost ky22]# ./firstshell.sh 
当前所在目录为:
/boot
其中以vml开头的文件有:
-rwxr-xr-x. 1 root root 5.7M 7月  21 01:17 vmlinuz-0-rescue-a7b68c40b6b740bb8733b5fcdc8170aa
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64

#法二:指定Shell来解释脚本,不要求文件必须有x权限
[root@localhost ky22]# bash firstshell.sh 
当前所在目录为:
/boot
其中以vml开头的文件有:
-rwxr-xr-x. 1 root root 5.7M 7月  21 01:17 vmlinuz-0-rescue-a7b68c40b6b740bb8733b5fcdc8170aa
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64

#法三:source 脚本路径执行shell脚本

[root@localhost ky22]# source firstshell.sh 
当前所在目录为:
/boot
其中以vml开头的文件有:
-rwxr-xr-x. 1 root root 5.7M 7月  21 01:17 vmlinuz-0-rescue-a7b68c40b6b740bb8733b5fcdc8170aa
-rwxr-xr-x. 1 root root 5.7M 8月  23 2017 vmlinuz-3.10.0-693.el7.x86_64

 

 1.2.3命名要求

区分大小写

不能使程序中的保留字和内置变量:如: if, for, hostname

只能使用数字、字母及下划线,且不能以数字开头,注意:不支持短横线“-",和主机名相反

不要使用内置的变量,使用英文尽量使用词义通俗易懂,PATH

驼峰StudentFirstName

小驼峰studentFirstName·

下划线: student_name
 

1.2.4脚本错误

1.命令错误:命令出错不会影响接下来的命令继续2.语法错误

2.语法错误:会影响接下来的命令继续

3.逻辑错误:只能自己去筛查

查找代码的正确:

bash -n 脚本名称 (不在当前目录下加绝对路径)   检查语法错误
bash -x 脚本名称 (不在当前目录下加绝对路径)   检查逻辑错误

1.3管道与重定向

由于Shell脚本“批量处理”的特殊性,其大部分操作过程位于后台,不需要用户进行干预,因此要学会提取、过滤执行信息变得十分重要,所以我们需要重定向和管道。

1.3.1管道

管道操作符:“|”: 将管道符号“|"左侧的命令输出的结果,作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道.

[root@localhost ~]#ps aux |wc -l   #查看进程数
168
[root@localhost ~]#echo "123123"|passwd --stdin zhangsan #给张三设置密码

 1.3.2重定向

交互式硬件设备

重定向操作

eg1:将123456重定向输出到pass.txt文件中,然后将pass.txt的内容重定向输入给用户lili的密码,从pass.txt 文件中取密码,需要注意SELinux 会影响此命令执行,若执行失败可尝试关闭SELinux(setenforce 0)。

[root@localhost ~]#useradd lili
[root@localhost ~]#echo "123abc" > pass.txt
[root@localhost ~]#passwd --stdin lili < pass.txt 
更改用户 lili 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# 

 

 eg2:

#将12345678输入到文件log.txt中
[root@localhost ~]#echo "12345678" > log.txt
[root@localhost ~]#cat log.txt 
12345678
#再将112234写入log.txt中,这个时候会覆盖原来的数据
[root@localhost ~]#echo "112234" > log.txt 
[root@localhost ~]#cat log.txt 
112234
#继续将112234写入log.txt中,使用>>,这个时候会追加原来的数据
[root@localhost ~]#echo "112234" >> log.txt 
[root@localhost ~]#cat log.txt 
112234
112234

 eg3:ls -lh > log.txt 2>&1 等同于 ls -lh &> log.txt > (将标准输出结果保存到指定的文件) 2>&1(将标准错误输出重定向到标准输出) &>(将标准输出、标准错误输出保存到同一文件)

 

 

二、Shell脚本变量 

2.1Shell变量的作用

  1. 用来存放系统和用户需要使用的特定参数(值)

  2. 变量名:使用固定的名称,由系统预设或用户定义

  3. 变量值:能够根据用户设置、系统环境的变化而变化

2.2Shell变量的类型

  • 自定义变量:由用户自己定义、修改和使用;

  • 特殊变量:环境变量,只读变量,位置变量,预定义变量。

2.2.1自定义变量

1.定义新的变量:

格式:变量名=变量值
#示例:
[root@localhost ~]#abc=123

2.查看定义的变量的值:

格式echo $变量名
#示例:
[root@localhost ~]#echo $abc
123

3.赋值时使用引号

  • 双引号:允许通过$符号引用其他变量值

  • 单引号:禁止引用其他变量值, $视为普通字符

  • 反撇号:命令替换,提取命令执行后的输出结果,``和$(…)作用相同

4.从键盘输入内容为变量赋值 

#法一: read命令获取输入内容
##格式
read -p 提示信息 变量名
echo $变量名
[root@localhost ~]#read -p "请输入你的名字:" name
请输入你的名字:yxp
[root@localhost ~]#
 
#法二:在脚本中编写,在命令行实现read获取
##示例:
[root@localhost ~]#vim name.sh
 
#!/bin/bash
read -p “请输入你的名字” name
echo "--------"
read -p “请输入他的名字” name1
echo "--------"
echo "你的名字是"
echo $GAME
echo "他的名字是"
echo $GAME2
 

一

二

2.2.2变量作用范围

  • 默认情况下,新定义的变量只在当前的Shell环境中有效,因此称为局部变量。当进入子程序或新的子Shell环境时局部变量将无法再使用。

  • 可以通过内部命令export将指定的变量导出为全局变量,使用户定义的变量在所有的子Shell环境中能够继续使用。

 变量名设置格式:变量名=变量值
全局变量格式:export 变量名=变量值

eg1:临时设置变量

eg2:永久设置变量,需要在/etc/profile文件里面添加

vim /etc/profile
export PATH+=:/mnt
[root@localhost data]#source /etc/profile
[root@localhost data]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/data:/mnt

 2.3整数变量的算术计算

运算符:+ 加法、- 减法、* 乘法、/除法、% 取余

常见表达式:

expr 变量1 运算符 变量2 
var=$(expr 变量1 运算符 变量2)
var=$((变量1 运算符 变量2))
var=$[变量1 运算符 变量2]
let var=变量1 运算符 变量2
 
i++相当于i=$[$i + 1],i++是先赋值,再运算
i--相当于i=$[$i - 1],++i是先运算再赋值
i+=1相当于i=$[$i + 1]

eg1:使用管道符

示例2:expr不可计算小数,并且变量和运算符之间需要空格分隔

示例3:计算乘法时,需要使用“\”转义符

示例4:取余只需要除后的余数

示例5:随机取余

示例5:使用let

示例6:i++和++i

2.4环境变量 

使用 env 命令可以查看到当前工作环境下的环境变量

变量USER表示用户名称,HOME表示用户的宿主目录,LANG表示语言和字符集,PWD表示当前所在的工作目录,变量PATH表示可执行程序的默认搜索路径

配置文件:/etc/profile(全局生效)、~/.bash_profile(当前用户环境)
 

2.5只读变量

readonly命令用于定义只读shell变量和shell函数。readonly命令的选项-p可以输出显示系统中所有定义的只读变量。

格式:readonly 【选项】【参数】
[root@localhost data]#readonly abc=111
[root@localhost data]#abc=222  
bash: abc: 只读变量  #再想修改只读变量就无法修改了

 

 2.6位置变量

  • 当执行命令行操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数按照从左到右的顺序依次赋值给位置变量。

  • $n:n为数字,$0代表命令本身,1~9代表第一个到第九个参数,十以上的参数需要使用大括号表示,比如第十个参数为 ${10}

eg1:

eg2:

2.7预定义变量 

$* 和 $@:都会表示命令或脚本要处理的参数。

  • $* :把所有参数看成以空格分隔的一个字符串整体(单字符串)返回,代表"$1 $2 $3 $4 "

  • $@:把各个参数加上双引号分隔成n份的参数列表,每个参数作为一个字符串返回,代表“$1” “$2” “$3” “$4”

 2.8使用awk提取IP地址

[root@localhost data]#ip=`ifconfig ens33|awk /netmask/'{print $2}'`
[root@localhost data]#echo $ip
192.168.130.10


 

Shell编程【万字Shell详细介绍带你入门建议收藏】 Shell 是系统的用户界面,提供了用户与内核进行交互操作的一种接口Shell 将用户输入的命令并且把它们送到内核去执行,然后返回执行结果Shell 是可编程的,它允许用户编写由 Shell 命令组成的程序在 Unix/Linux 里,一个程序/命令只做好一件事;复杂的问题可以通过多个命令的组合来解决;形式最简单的 Shell 脚本就是一系列命令构成的可执行文件,并可以被其他脚本复用。编写风格良好易读的 Shell 脚本可以提高日常任务的自动化程度和准确性。 阅读详情

相关推荐

Shell脚本的编写规范【入门篇】

本文让你快如入门书写shell脚本,作为linux下开发,shell脚本的编写能力是必不可少的

小桥流水 的专栏 1897

Shell脚本编程(详解)

Shell是一种命令行解释器,也是操作系统与用户之间的接口。它允许用户通过键入文本命令来与操作系统交互,执行各种任务,包括文件操作、进程管理、系统配置等。Shell还可以用于编写脚本,自动化执行一系列命令,从而简化重复性的任务。

weixin_52270066的博客 1万+

计算机视觉-深度学习图像检测方法梳理

计算机视觉-深度学习图像检测方法梳理 由于之后要转方向啦,趁这段时间整理手中硕士研究方向的一些阅读笔记,这是一篇关于计算机视觉的基础知识梳理 先搞清一些小知识点 首先我们要弄清楚图像分类、目标定位、语义分割、实例分割的区别 a. 图像分类 :给定一张输入图像,图像分类任务旨在判断该图像所属类别; b. 目标定位 :在图像分类的基础上,我们还想知道图像中的目标具体在图像的什么位置,通常是以包围盒的(bounding box)形式; c. 语义分割 :语义分割是目标检测更进阶的任务,目标检测只需要框出每个目

qq_41662991的博客 9953

Shell脚本编程教程

3W字带你入门Shell编程语言的使用,更有小项目带你入门体验Shell编程的快乐

m0_60981735的博客 8156

计算机考研常见面试题

写在前面 本人参加20考研,由于复试没有具体要求会问哪几门课,所以我就找了网上一些常见的计算机专业的面试题,整理如下 主要结构: 数据库 软件工程 操作系统 计算机组成原理 计算机网络 数据结构 C++ Java 数据库 1、数据:数据库中存储的基本对象。 数据库:长期存储在计算机内的、有组织的、可共享的数据集合。 数据库管理系统:专门用于建立和管理数据库的一套软件。对外部程序提供访问数据库的方法,对内进行数据管理。 数据库系统:与和数据库相关的整个系统,一般由数据库、数据库管理系统、应用程序、数

qq_38841618的博客 2万+

ANSYS Discovery 2023R1 入门:手把手教你玩转几何模型参数化(附历史追踪避坑指南)

本文详细介绍了ANSYS Discovery 2023R1中几何模型参数化建模的全流程,包括基础设置、参数化实战技巧及历史追踪避坑指南。通过Workbench集成和智能参数控制,工程师可以高效完成设计迭代,特别适合需要频繁调整几何模型的仿真场景。文章还提供了参数丢失的预防策略和工业应用实例,帮助用户快速掌握这一提升设计效率的核心技能。

weixin_33693070的博客 464

Shell编程规范与变量

Shell脚本的概念将要执行的命令按顺序保存到一个文本文件给该文件可执行权限可结合各种Shell控制语句以完成更复杂的操作Shell脚本应用场景重复性操作交互性任务批量事务处理服务运行状态监控定时任务执行定义一个新的变量变量名以字母或下划线开头,区分大小写,建议全大写变量名=变量值查看和引用变量的值echo &变量名# 通过在变量名称前添加前导符号“$”,可以引用一个变量的值# 使用 echo 命令可以查看变量,可以在一条 echo 命令中同时查看多个变量值。

m0_74860678的博客 1594

攻克Windows平台3DGS复现:从环境配置到可视化实战全记录

本文详细记录了在Windows平台成功复现3D Gaussian Splatting(3DGS)的完整流程,涵盖从环境配置、依赖安装、数据准备到模型训练与可视化的全步骤。重点解决了Windows下CUDA版本匹配、Visual Studio编译及SIBR_viewers可视化工具部署等核心难题,为开发者提供了一份详实的避坑指南与实战手册。

weixin_28839699的博客 253

Shell 编程规范与变量

函数名应该具有描述性,遵循与变量命名相同的原则。# 好的函数命名# 函数体return 0在 Shell 中,变量的赋值使用等号,等号两边不能有空格。age=25遵循 Shell 编程规范能够使脚本更加清晰、易于维护和扩展;而熟练掌握变量的使用方法,则是实现各种功能的关键。通过不断实践和学习,你可以编写出高质量的 Shell 脚本,提高工作效率。在实际应用中,还需要根据具体需求和场景,灵活运用这些规范和知识。分享除了Bash,Shell还有哪些常见的变体?如何在Shell脚本中使用数组?

2501_91112123的博客 1251

国产HDMI2.0芯片GSV2011怎么选?手把手教你用它设计音视频采集卡(附FPGA/海思对接指南)

本文详细解析国产HDMI2.0芯片GSV2011在音视频采集卡设计中的应用,涵盖芯片选型、硬件设计要点及与FPGA/海思平台的对接指南。GSV2011凭借4K@60Hz支持、音频提取嵌入功能和高集成度,成为音视频设备的核心选择,助力开发者快速实现高性能采集卡设计。

weixin_30181209的博客 337

ArcGIS:根据DEM数据提取区域水系

利用DEM数据提取区域水系是常见的水文分析应用,为了获取区域的矢量水系数据,我们可以通过ArcGIS对高程DEM数据进行水文分析,为地表水流建立模型,进而获取到该地的水系数据,DEM数据精度越高,获取到的水系数据精度也就越高。以下介绍如何用ArcGIS提供的工具提取水系。

Oruizn的博客 9111

第十八章、shell编程规范与变量

格式:变量名=变量值变量命名规则:以字母或下划线开头,区分大小写是由Shell预先定义好的特殊变量,它们在脚本中有着特定的用途。:上一个命令的退出状态。$0:脚本的名称。$$:当前Shell进程的进程ID(PID)。:后台运行的最后一个进程的进程ID。$-:显示当前Shell使用的选项。$*和@$:如前所述,用于处理命令行参数$#:表示命令或脚本要处理的参数的个数。

moonligth111的博客 2475

GJB设计开发各阶段的文件和记录要求

GJB设计开发各阶段的文件和记录要求

Abel的博客 4058

Linux之Shell编程规范与变量

将要执行的命令按顺序保存到一个文本文件给该文件可执行权限可结合各种Shell控制语句以完成更复杂的操作自动化运维批量化重复操作可以编写脚本结合计划任务自动周期运行减轻管理员工作量提高处理文本文件的速度避免配置出错格式:变量名=变量值变量命名规则:以字母或下划线开头,区分大小写环境变量由系统提前创建,用来设置用户的工作环境使用 env 命令可以查看到当前工作环境下的环境变量。

qq_71300653的博客 2227

【开发必备插件】iframe嵌套报“拒绝连接请求”的本地解决方法

关键词:iframe 拒绝连接、X-Frame-Options、Chrome 插件、前端调试、Allow X-Frame-Options前几天我在本地项目里调试一个第三方网站的嵌入页面时,遇到了一个非常经典的报错:xxx.com 拒绝了我们的连接请求。熟悉的老前端们一眼就知道——这是。但对于日常开发来说,我们经常需要在本地测试 iframe 嵌套外部页面(比如嵌第三方登录页、支付页、可视化报表系统等)。而线上站点配置了或DENY时,就会直接导致 iframe 加载失败。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1545

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Shell 编程规范与变量​

Shell 编程在系统管理、自动化任务执行等领域发挥着至关重要的作用。编写清晰、规范且易于维护的 Shell 脚本不仅能提高工作效率,还能减少错误的发生。而变量作为 Shell 编程中的基础元素,对脚本的灵活性和功能性有着深远影响。本文将深入探讨 Shell 编程规范以及变量的相关知识,帮助开发者写出更优质的 Shell 脚本。同时,我们也会详细介绍 Shell 内常见的符号和字符,它们在 Shell 编程中起着关键作用,熟练掌握它们能让你更好地驾驭 Shell 脚本。定义变量。

2503_91100205的博客 1092

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

shell编程规范与变量

shell编程规范与变量

shanjun12的博客 729

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Shell的编程规范及变量

Shell的编程规范及变量 技能目标:一、掌握shell脚本的编程规范 二、掌握管道,重定向 三、掌握shell脚本变量 一、shell脚本编程规范 Shell脚本打概述:就是将要执行的命令按顺序保存到一个文本文件,并给于该文件一定的权限,方便一次性执行的程序文件。 Shell的作用:可以批量的处理,自动化的完成一系列的维护任务,大大减少管理员的负担。 通过/etc/shells可以了解当前所支持的shell脚本种...

Laiyunpeng666的博客 231
上一篇: PXE高效网络装机、Kickstart无人值守安装
下一篇: Shell脚本之条件测试、if、case条件测试语句
Au杨
博客等级 码龄6年 37粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值