【Linux】shell编程,()圆括号, []方括号, {}花括号与(())双括号的使用区别

2024-05-11 23:12

本文主要是介绍【Linux】shell编程,()圆括号, []方括号, {}花括号与(())双括号的使用区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. ( )圆括号

初始化数组使用圆括号;
命令组,将一系列命令用空格隔开;
命令替换,使用$ 美元符,将命令进行嵌套使用;(有点儿类似于管道符作用的感觉)

arr=(1 2 3 4 5)

2. [ ]方括号

搭配美元符$,用于整型计算;
数组默认使用方括号提取对应下标的元素
test命令的简写形式就是方括号[ ],而且方括号包围的命令两侧必须有空格隔开。用于if条件语句中;

var1=10	#变量var1,var2
var2=20
var3=$[ var1+var2+2 ]; 	#输出运算结果:32
var3=$[ $var1+$var2+2];	#输出:32
arr=(1 2 3)
echo ${arr[1]};	#输出:2
#!/bin/bash	
var1=10
var2=20
if [ $var1 -gt $var2 ]
thenecho hello linux world!
elseecho study linux now!
fi

输出:study linux now!

3. { }花括号

用于需要变量和字符串组合输出时,变量后拼接字符串。包住变量,避免歧义

var1=10	#变量var1
echo $var11; 	#未识别变量var11
echo ${var1}1;	# 101,其中10是变量var1的值,1为后续字符串
arr = (1 2 3)	#数组arr
echo $arr; 	#输出数组第一个元素:1
echo $arr[1];	#输出数组第一个元素和后续:1[1]
echo ${arr[1]};	#输出数组下标为1的元素:2,数组下标从0开始
echo $arr[*]; 	#输出第一个元素和后续:1[*]
echo ${arr[*]};	#避免歧义,输出数组中的全部元素:1 2 3

4. (())双括号

使用高级数学表达式,也可与美元符号搭配,用于整型数据计算。使用高级数学表达式时,内部不使用美元符时未报错。

var1=10	#变量var1,var2
var2=20
var3=$((var1+var2))		#输出30
var4=$(($var1+$var2))	#输出30
var5=((var1+var2))  	报错
var6=((var1+var2))  	报错

其他测试结果

j=1
echo j #输出j
echo $j	 #输出1
k=j+1
echo $k	 #输出j+1
k=(j+1)
echo $k	 #输出j+1
k=$j+1
echo $k	 #输出1+1
k=($j+1)
echo $k	 #输出1+1
k=$((j+1))
echo $k	 #输出2
k=$(j+1)
echo $k	#报错:j+1:未找到命令

这篇关于【Linux】shell编程,()圆括号, []方括号, {}花括号与(())双括号的使用区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/980921

相关文章

使用FileChannel实现文件的复制和移动方式

《使用FileChannel实现文件的复制和移动方式》:本文主要介绍使用FileChannel实现文件的复制和移动方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录使用 FileChannel 实现文件复制代码解释使用 FileChannel 实现文件移动代码解释

Java中的getBytes()方法使用详解

《Java中的getBytes()方法使用详解》:本文主要介绍Java中getBytes()方法使用的相关资料,getBytes()方法有多个重载形式,可以根据需要指定字符集来进行转换,文中通过代... 目录前言一、常见重载形式二、示例代码三、getBytes(Charset charset)和getByt

Java使用Stream流的Lambda语法进行List转Map的操作方式

《Java使用Stream流的Lambda语法进行List转Map的操作方式》:本文主要介绍Java使用Stream流的Lambda语法进行List转Map的操作方式,具有很好的参考价值,希望对大... 目录背景Stream流的Lambda语法应用实例1、定义要操作的UserDto2、ListChina编程转成M

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component

使用easy connect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题

《使用easyconnect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题》:本文主要介绍使用easyconnect之后,maven无法... 目录使用easGWowCy connect之后,maven无法使用,原来需要配置-DJava.net.pr

使用Java编写一个字符脱敏工具类

《使用Java编写一个字符脱敏工具类》这篇文章主要为大家详细介绍了如何使用Java编写一个字符脱敏工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、字符脱敏工具类2、测试工具类3、测试结果1、字符脱敏工具类import lombok.extern.slf4j.Slf4j

pandas DataFrame keys的使用小结

《pandasDataFramekeys的使用小结》pandas.DataFrame.keys()方法返回DataFrame的列名,类似于字典的键,本文主要介绍了pandasDataFrameke... 目录Pandas2.2 DataFrameIndexing, iterationpandas.DataF

使用Python和PaddleOCR实现图文识别的代码和步骤

《使用Python和PaddleOCR实现图文识别的代码和步骤》在当今数字化时代,图文识别技术的应用越来越广泛,如文档数字化、信息提取等,PaddleOCR是百度开源的一款强大的OCR工具包,它集成了... 目录一、引言二、环境准备2.1 安装 python2.2 安装 PaddlePaddle2.3 安装

嵌入式Linux之使用设备树驱动GPIO的实现方式

《嵌入式Linux之使用设备树驱动GPIO的实现方式》:本文主要介绍嵌入式Linux之使用设备树驱动GPIO的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、设备树配置1.1 添加 pinctrl 节点1.2 添加 LED 设备节点二、编写驱动程序2.1

嵌入式Linux驱动中的异步通知机制详解

《嵌入式Linux驱动中的异步通知机制详解》:本文主要介绍嵌入式Linux驱动中的异步通知机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、异步通知的核心概念1. 什么是异步通知2. 异步通知的关键组件二、异步通知的实现原理三、代码示例分析1. 设备结构