首页 > 系统相关 >shell - 变量及数学计算

shell - 变量及数学计算

时间:2024-06-20 10:11:21浏览次数:13  
标签:arr shell 变量 打印 echo 拼接 let 字符串 数学计算

变量声明

# 注意:以 num=1 为例,等号两边不能有空格

# 数字
num=1

# 字符串
str0=test
str1='test'
str2="test"

# 字符串的三种声明方式是有区别的:
# 1. 单引号中的内容回原样输出,不会转义,不会取值。
# 2. 双引号中的内容输出,会转义,会取值。
# 3. 没有引号 和 双引号效果一样。
echo 'hello,\"hh\"';echo "hello,\"hh\"";echo hello,\"hh\";

# 数组
arr=(1 abc)

# 声明数组,第一个元素改成2,打印第一个元素,打印全部元素
arr=(1 abc);arr[0]=2;echo ${arr[0]};echo ${arr[*]};

字符串拼接

# 推荐使用这种方式,这种写法,不论是前端,还是后端,都能理解代码含义
a=3;b=4;echo "${a}xadasd${b}"

在linux下,字符串的声明可以不要引号,但是很容易产生歧义:

# 其实是声明另一个字符串 b,而不是将 b 赋值给 a
a=b;

# 本意是想声明一个变量 b,在 a 的基础,再拼接上 xxx,实际输出是空串
a=abc;b=$axxx

# 在做数字计算的时候,很容易发生的错误,最后会打印字符串:3+4
a=3;b=4;a=$a+$b;echo $a;

# 其它拼接方式

# 下面两种写法效果是完全一样的
a=3;b=4;a=$a$b;echo $a;
a=3;b=4;a="$a$b";echo $a;

# 用不同方式声明的字符串,是可以进行拼接的
echo 'date'"end";
a=3;echo $a"str";

运算

用于数字计算,只要记住下面两种,一定要注意关键字的使用,少了就变成字符串拼接了。

# 用 let 关键字
a=3;b=4;let c=$a+$b;echo $c
# 用美元符
a=3;b=4;c=$(($a+$b));echo $c

各种刁钻的案例,面试可能会遇到,加深一下记忆

# 打印 4
a=3;b=4;a=$b;echo $a
# echo缺少美元符,打印 c
a=3;b=4;let c=$a+$b;echo c
# 打印 7
a=3;b=4;let c=$a+$b;echo $c
# 打印 3+7
a=3;b=4;c=$a+$b;echo $c
# 打印 7
a=3;b=4;c=$(($a+$b));echo $c
a=3;b=4;c=`$a+$b`;echo $c
# 打印 3+4
a=3;b=4;c=`expr $a+$b`;echo $c
# 打印 7
a=3;b=4;let c=`expr $a+$b`;echo $c

标签:arr,shell,变量,打印,echo,拼接,let,字符串,数学计算
From: https://www.cnblogs.com/chenss15060100790/p/18258136

相关文章

  • shell - 逻辑运算
    记录一些与或非相关的逻辑运算数字比较-eq等于,如:if["$a"-eq"$b"]-ne不等于,如:if["$a"-ne"$b"]-gt大于,如:if["$a"-gt"$b"]-ge大于等于,如:if["$a"-ge"$b"]-lt小于,如:if["$a&quo......
  • shell - 流程控制语句
    if条件语句ifconditionthen #dosth.elifconditionthen #doanother.else #doothers.fi#有些人喜欢这样写,看起来更紧凑一些ifcondition;then #dosth.elifcondition;then #doanother.else #doothers.fi样例:a=10;b=20;#下面这一句,方括号是......
  • 通过 HIDS 告警分析 webshell 行为
    准备漏洞环境1. 下载 vulhub 仓库gitclonehttps://github.com/vulhub/vulhub.git2.  修改 tomcat 弱口令漏洞环境配置vivulhub/tomcat/tomcat8/tomcat-users.xml将配置文件中的 user 和 password 修改为非弱口令3.  启动漏洞环境(根据实际 docker 环境......
  • Bat中实现git和Maven环境变量检测,拉取git代码并打包maven项目,读取子目录差异性yml文件
    场景Docker+Jenkins+Pipline实现SpringBoot项目input选择不同差异性yml文件打包、执行sh打包压缩包、使用archiveArtifacts下载制品(jar包、压缩包):https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/139748758上面实现打包后台jar包并选择不同的差异性yml文件打包成......
  • 区间预测 | Matlab实现的集成双向长短期记忆网络自适应带宽核密度BiLSTM-Adaboost-ABK
    %设置参数numLSTM=3;%LSTM模型数量numBoost=5;%Adaboost迭代次数%加载数据load(‘data.mat’);%替换为您的数据文件%数据预处理%…%初始化LSTM模型lstmModels=cell(numLSTM,1);fori=1:numLSTMlstmModels{i}=trainLSTMModel(data);%使用......
  • shell语言入门
    前言Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁,是linux内置的一款软件。通过编写Shell的脚本,可以更好的使用linux系统(比如、安装卸载软件、增删改查文件等等),毕竟大部分linux、系统都没有界面,不像windows那样鼠标点点就完成了大部分需求。shell软件的种类有很多......
  • Postman 集合变量使用详解
    前言作为一名测试工程师,在API测试中,Postman是一款强大的工具。集合变量是Postman中的重要功能,能够让测试更加灵活、高效。本文将详细介绍Postman集合变量的定义、使用和管理方法,帮助您更好地掌握这项技能。什么是集合变量集合变量是定义在Postman集合(Collection)范围内......
  • Postman 自定义变量使用详解
    前言Postman是一款强大的API测试工具,广泛应用于API开发和测试中。自定义变量是Postman中的重要功能,能够让测试过程更加灵活和高效。本文将详细介绍如何定义、使用和管理Postman中的自定义变量,包括全局变量、环境变量、集合变量和本地变量。自定义变量类型全局变量(Global......
  • 《代码大全2》第三章 变量(变量名的力量)
    说到变量命名,先看下面的代码inta=0;intb=0;intc=0;=========================intcount=0;intindex=0;intsum=0;如果在项目中,你更愿意看到哪些命名的变量?代码是给人看的,不是给机器看的代码不是给机器看的,更重要的是给人看的,更重要的是代码要让除了你之外的......
  • OpenCL中局部变量和全局变量间的异步复制内存
    本文主要是async_work_group_copy(...)和wait_group_events(...)的使用范例。展示了从全局内存到局部内存加载数据和从局部内存到全局内存写入数据。这系列内置函数可以用来取代直接赋值式的代码。不过我没有仔细对比过使用异步复制和直接赋值那个效率更高。本系列函数中还有定步......