shell脚本 - 学习if语句和变量赋值

linux的shell解释器(shell脚本)基础 linux的shell脚本部分基础内容,都为常用部分 阅读详情

譬如某一天我们做了一个很吊的软件,为了方便用户安装和初始化,我们需要写一个shell脚本,让用户执行下脚本就完成了初始化。

功能如下:
定义一个init.sh
1、查看当前目录下是否存在error.log文件,如没有则生成一个
2、如果有了,则加入一行文字”init ai time xxx”,把当前时间加入

这也是一个常用的shell脚本应用,接下来,我们实现一下。
这里写图片描述
这里写图片描述
上面我们就创建了一个简单shell脚本文件,下面继续完善我们的功能:
修改init.sh,没有error.log文件,就创建并写入”log init”
这里写图片描述
查看
这里写图片描述

注意上面我们的 \n 并没有换行,我们来强制换行:
这里写图片描述
这里写图片描述

获取系统时间:
这里写图片描述
这里写图片描述
> 表示覆盖
>> 追加

最后init.sh:

ERR_LOGFILE="error.log"
CUR_TIME=`date +'%Y-%m-%d %H-%M-%S'`
if [ -f $ERR_LOGFILE ]
 then
 echo "add log at $CUR_TIME" >> $ERR_LOGFILE
 else
 echo -e  "log init at $CUR_TIME " > error.log
fi

这里写图片描述

[linux]第一天:shell脚本语言:变量、测试、控制语句以及函数的全面详解 shell脚本是一种脚本语言,我们只需使用任意文本编辑器,按照语法编写相应程序,增加可执行权限,即可在安装shell命令解释器的环境下执行。shell 脚本主要用于帮助开发人员或系统管理员将复杂而又反复的操作放在一个文件中,通过简单的一步执行操作完成相应任务,从而解放负担。 阅读详情

相关推荐

通达信指标加密DLL加密解密三个公式源码准确率90%以上超级指标精准买卖绝世指标

通达信指标加密DLL加密解密三个公式源码准确率90%以上超级指标精准买卖绝世指标 1 超级指标 指标公式:买卖提示非常明显(适合通达信) 指标源码如下: M:3 100 60 N 3 100 30 散户线: 100*(HHV(HIGH,M)-CLOSE)/(HHV(HIGH,M)-LLV(LOW,M));RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; K:=SMA(RSV,5,1); D:=SMA(K,3,1); J:=3*K-2*D;主力

m0_60244077的博客 3万+

shell脚本赋值的5种方法

1.  Shell中的变量类型 Shell中的变量可以分为环境变量、位置变量、预定义的特殊变量以及用户自定义变量、 2.  环境变量 Shell中的环境变量是一类Shell预定义变量,是用于设置系统运行环境的变量,环境变量由系统统一命名。部分系统变量的值由系统设定,部分环境变量的值可以由用户给定。 环境变量的名称由大写字母组成,常用的Shell环境变量如下所示:   HOME: 用户主

JackieGemini 6万+

香橙派rk3588的rknn多线程推理RTSP流服务性能优化与资源分配策略

本文深入探讨了香橙派RK3588平台上的RKNN多线程推理在RTSP流服务中的性能优化与资源分配策略。通过分析硬件架构、设计多线程推理流水线、实现NPU核心负载均衡及优化RGA内存管理,显著提升了RTSP视频流的处理帧率和降低了延迟,为边缘计算视频分析应用提供了实用的优化方案。

7up55的博客 653

shell-if语句详解

if条件 then Command else Command fi别忘了这个结尾 If语句忘了结尾fi test.sh: line 14: syntax error:unexpected end of fi if 的三种条件表达式 if command then if 函数 then 命令执行成功,等于返回0 (比如grep ,找到匹配) ...

qq_28094011的博客 1万+

ESP32-S3数字麦克风入门:手把手教你用Arduino IDE读取MSM261S4030H0R的I2S数据

本文详细介绍了如何使用Arduino IDE读取MSM261S4030H0R数字麦克风的I2S数据,涵盖硬件连接、代码编写和数据可视化全流程。重点解决I2S引脚配置、环境噪声过滤和声波观察等实际问题,适合ESP32-S3开发者快速上手数字麦克风应用。

weixin_26742753的博客 314

Windows服务器SSL漏洞修复实战:如何一键禁用TLS 1.0/1.1避免SWEET32攻击

本文提供了Windows服务器修复SWEET32漏洞的实战指南。通过组策略编辑器,详细讲解如何一键禁用不安全的TLS 1.0/1.1协议,并优化密码套件顺序,以消除由3DES等弱加密算法带来的安全风险。文章还涵盖了应对SQL Server等应用兼容性挑战的解决方案,以及企业级批量部署的脚本化方法,帮助管理员系统性地提升服务器TLS/SSL安全配置。

weixin_29310631的博客 244

shell的if语句

$?:表示函数命令的返回结果 =放在别的地方是赋值,放在if [ ] 里就是字符串等于,shell里面没有==的,那是c语言的等于  等号作为判断操作符,必须和其他变量,关键字,用空格格开 (等号做赋值号时正好相反,两边不能有空格)      If  [  $ANS  ]    等价于  if [ -n $ANS ]        如果字符串变量非空则(then) , 空则(else)

wu407797466的专栏 3390

[3D检测系列-PV-RCNN] PV-RCNN实战指南:从论文解析到代码调试全流程

本文提供了PV-RCNN在3D目标检测领域的实战全流程指南。文章深入解析了其Point-Voxel融合的核心思想,并详细演示了从环境搭建、数据准备、代码复现到模型训练与调试的具体步骤,特别针对常见的报错问题给出了解决方案,帮助开发者高效掌握这一经典算法。

weixin_29189381的博客 480

if条件语句(赋值)

如果在条件语句的某个条件里使用了单个等号,那么只要相应的赋值操作取得成功,那个条件的求值结果就将是true var num1='happy'; var num2='sad'; if(num2=num1){   alert('true'); } 这是把变量num1赋值给变量num2,而不是在比较他们是否相等。 赋值运算并非总是返回真值:if(num1=false){alert('tru...

weixin_30425949的博客 3118

金蝶ERP元数据解析:字段属性与表结构映射实战

本文深入解析金蝶ERP元数据的核心价值与应用实践,详细介绍了字段属性与表结构映射的关键技术。通过缓存获取与工具类直连两种方案对比,结合实际案例展示元数据在数据库校验、动态表单生成等场景的应用,帮助开发者高效解决二次开发中的常见问题。

weixin_33738555的博客 432

脑机接口(BCI)从原理到开发实战 07|运动想象BCI实战:基于BCI Competition IV 2a数据集

本文基于BCI Competition IV 2a数据集,详细介绍运动想象脑机接口系统的全流程实现。首先概述了该数据集的实验范式、参数特点和优势,然后指导环境准备与数据下载。通过代码示例展示了数据加载、事件标记提取和信号可视化方法。重点构建了完整的预处理流水线,包括通道选择、重参考、带通滤波(8-30Hz)和ICA去伪迹等关键步骤。文章旨在帮助读者将零散的BCI知识整合为完整的实战项目,掌握从原始脑电数据到运动意图解码的核心技术。

小明的博客 845

自己对Java中if变量赋值的理解

if条件中的局域变量的作用域 在if条件里面定义的变量没法在,if外面共享比如下面 2. if条件,程序不一定会,执行,但是else条件肯定会执行。所以不要在if条件里面定义变量 但是如果加上else结果就不一样了 if-else if -else中的条件有作用区间的 先看段简单的代码,结果是啥很明显了 int score = 89; if(score<0 || score>100){ System.out.println("你的成绩是错误的");

qq_43515464的博客 5060

手把手教你学simulink(95.1)--PID控制实例:基于Simulink的PID控制温度控制系统建模与仿真

温度控制是工业自动化、家用电器、医疗设备以及航空航天等领域中常见的控制问题。通过精确的温度控制,可以提高生产效率、降低能耗并确保产品质量。PID(比例-积分-微分)控制器因其结构简单、性能稳定且易于实现而被广泛应用于各种温度控制系统。本项目旨在通过MATLAB/Simulink平台设计和验证一个基于PID控制的温度控制系统,重点研究PID参数调优方法、系统动态响应特性以及稳态误差消除能力。

MHD0815的博客 792

shell脚本常用语法整理-积累中

for循环 首先创建一个数组 array=(he l l o 0 0 7) 1.标准的for循环 for(( i=0;i<${#array[@]};i++)) do#${#array[@]}获取数组长度用于循环 echo ${array[i]};done; 2.for … in 遍历(不带数组下标): for element in ${array[@]}#也可以写成for element in ${array[...

hello_java_lcl的博客 182

深度学习工具包 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")

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

第一个shell文件

为什么要学shell? 什么是脚本语言 变量 if语句 while语句 echo

smallflyingpig的专栏 701

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

shell脚本记录

file=$1 url='10.160.62.11:8088/astonmartin/manager/handle_problem/addCoupon?' echo ${file} while read line do array=(`echo $line | tr ',' ' '`); inviterPhone=${array[0]}; inviteePhone=${array[1]}; inviteeOrderId=${array[2]}; echo ${i...

19li 415

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SHELL 脚本(1)

SHELL 脚本 编程(1) 检测命令是否执行成功 #!/bin/bash #filename:successTest.sh CMD="command" #command is the test order $CMD if [ $? -eq o ]; then echo "CMD executed successfully" else echo "$CMD terminated unsuccessfully" fi echo $? $?会给出上一次执行命令的返回值 如果命令成功退出那么退出的状态为0,否则

weixin_40026739的博客 345

linux怎么重命名文件做备份,shell备份,重命名,删除目录下面的文件

1,备份目录下面文件#!/bin/bashE_BADARGS=65case$# in//$#表示转入参数的个数,sh bak.sh ./ .sh 有二个参数./和.sh0) // 参数为空时,提示错误,并且退出echo"message:param is wrong"exit$E_BADARGS;;esacstring=" "cd $1//进入传入的目录//备...

weixin_39646084的博客 895

shell bash 语法

shell bash 语法一、shell介绍二、dirname和basename三、$0和BASH_SOURCE[0]的区别四、变量定义和赋值五、代换1.文件名用通配符代换2. 命令代换:`, $()3. 符号六、if/then/elif/else/fi七、case/esac八、for/do/done九、while/do/done十、条件判断语句十一、位置参数和特务变量十二、函数十三、命令的组合符&&和||十四、echo命令十五、终端常用的快捷键参考 一、shell介绍 Shell的作用是解

weixin_45606237的博客 2240

shell脚本专家指南笔记#6_测试变量和设置默认值

## # 本文为《shell脚本专家指南》一书的学习笔记。 ## 6. 测试变量和设置默认值 6.1. 设置默认值     设置变量默认值的几种形式,复杂程度递减。     #     if [ -z "$var" ]; then       var="default"     fi     #     [-z "$var" ] &amp;&amp; var="default"     #  ...

anyuzun的博客 487

shell的基本指令

1、echo ""; 输出对应数据到终端 2、$0 表示执行的文件名 $1 输入的第一个参数 $2 输入的第二个参数 $# 传参的个数 $@ 所有传入的参数 3、 name=song 对name进行赋值,把song赋给name PWD=$(pwd) 把pwd的执行结果赋值给PWD readonly PWD PWD是只读的赋值后不能在进行修改 sleep 3s 休眠三秒 4、 if语句 i...

wing12345678910的博客 343

SHELL(6)if条件判断与for循环结构

学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!免责声明:本教程作者及相关参与人员对于任何直接或间接使用本教程内容而导致的任何形式的损失或损害,包括但不限于数据丢失、系统损坏、个人隐私泄露或经济损失等,不承担任何责任。每一次循环,$num都会被赋予不同的值,输出不同的结果。在之前基础上增加elif命令。

weixin_43433141的博客 327

Linux shell脚本之 if条件判断

shell基本语法 shell中将命令结果赋值给变量 var=`command` var=$(command) # 推荐是用这种方式,支撑嵌套 shell 脚本中变量的数学计算 shell声明变量类型 declare -i x x=1+1 echo $x SHELL脚本获取自身所在路径和名字 #!/bin/bash BaseName=$(basename $BASH_SO...

yongwan5637的博客 2万+

shell脚本之变量与if语句(笔记)

第一章hell编程规范与变量 技能目标 掌握shell脚本编程规范 掌握管道,重定向 掌握shell环境变量 在linux系统中Shell脚本可以批量处理,自动化地完成一系列的维护任务 Shell脚本就是要将执行的命令按“顺序”保存到一个文本文件中后缀为“.sh”,并给文件“x”权限,方便一次性执行的一个程序文件 Shell编程规范 Shell脚本充当一个”命令解释器“将命令解释”,并输出执行结果。/etc/shells文件保存当前系统所有支持的shell脚本种类 一个完整的shell脚本应包含3部

qq_48059971的博客 3124

linux的shell脚本if语句,Shell脚本编程之判断语句

一、单分支if语句格式:if 判断条件;thenstatement1statement2...fi二、双分支的if语句格式:if 判断条件; thenstatement1statement2...elsestatementN...fi使用一个以前用过的脚本来说明这个结构。三、多分支if语句格式:if 判断条件1;thenstatement1...elif 判断条件2; thenstatement2...

weixin_33542589的博客 3016
上一篇: 模拟linux的 cat命令 读取文件
下一篇: shell脚本 - sed文件读取指定行
学习笔记666
博客等级 码龄12年 1047粉丝 1369原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值