首页 > 系统相关 >linux中的双括号

linux中的双括号

时间:2022-10-22 12:00:41浏览次数:77  
标签:&& echo 括号 exp linux 表达式

linux中各种括号的使用

双小括号 (( ))
①整数扩展。这种扩展计算是整数型的计算,不支持浮点型。((exp))结构扩展并计算一个算术表达式的值,如果表达式的结果为0,那么返回的退出状态码 为1,或者 是"假",而一个非零值的表达式所返回的退出状态码将为0,或者是"true"。若是逻辑判断,表达式exp为真则为1,假则为0。

((1+1))
echo $?	#输出0(0是退出状态,要与返回值(为真)区别,可以理解为正常退出)
((1<1))
echo $?	#输出一个正整数

②只要括号中的运算符、表达式符合C语言运算规则,都可用在$((exp))中,甚至是三目运算符。作不同进位(如二进制、八进制、十六进制)运算时,输出结果全都自动转化成了十进制。如:echo $((16#5f)) 结果为95 (16进位转十进制)

echo $((1+2)) #输出3
echo $((1<1)) #输出0

③单纯用 (( )) 也可重定义变量值

④双括号中的变量可以不使用$符号前缀。括号内支持多个表达式用逗号分开。

a=1;
((++a))
echo $a	#输出2
if ((a<3)); then ...

双中括号[[]]
①[[]]是bash程序语言的关键字。并不是一个命令,[[]]结构比[]结构更加通用。在[[和]]之间所有的字符都不会发生文件名扩展或者单词分割,但是会发生参数扩展和命令替换。

②支持字符串的模式匹配,使用=~操作符时甚至支持shell的正则表达式。字符串比较时可以把右边的作为一个模式,而不仅仅是一个字符串,比如[[ hello == hell? ]],结果为真。[[ ]] 中匹配字符串或通配符,不需要引号。

③使用[[ … ]]条件判断结构,而不是[ … ],能够防止脚本中的许多逻辑错误。比如,&&、||、<和> 操作符能够正常存在于[[ ]]条件判断结构中,但是如果出现在[ ]结构中的话,会报错。比如可以直接使用if [[ $a !=1 && $a != 2 ]], 如果不使用双括号, 则为if [ $a -ne 1] && [ $a != 2 ]或者if [ $a -ne 1 -a $a != 2 ]。

④bash把双中括号中的表达式看作一个单独的元素,并返回一个退出状态码。

[[ 2\<3 ]] && echo true || false
#true
[[ 2 -lt 3 ]] && echo true || false
#true

标签:&&,echo,括号,exp,linux,表达式
From: https://www.cnblogs.com/blover/p/16815759.html

相关文章

  • Linux进程(一)
    操作系统概念:操作系统是管理计算机硬件与软件资源的计算机程序,简称OS。为什么要有操作系统:1.给用户提供稳定、高效和安全的运行环境,为程序员提供各种基本功能(OS不信任任......
  • linux docker容器安装nacos
    1、添加nacos数据源createdatabasecloud_nacos;usecloud_nacos;/**Copyright1999-2018AlibabaGroupHoldingLtd.**LicensedundertheApacheLicense......
  • Linux下matalb2021a和2022a无法启动simulink的解决方案之一
    提示错误类似:bin/glnxa64/MATLABWindow:symbollookuperror:somelibrary:undefinedsymbol:FT_Get_Var_Blend_Coordinatesor:bin/glnxa64/MATLABWindow:symbollo......
  • linux下matlab启动时Failed to load module "canberra-gtk-module"的错误解决办法
     1、查看库是否存在:locatelibcanberra如果不存在,安装库;sudopacman-Scanberra如果不存在命令,安装软件并更新数据库;sudopacman-Smlocate&&updatedb2、建立软链......
  • 江苏工匠杯unseping(反序列化+Linux命令执行{$(printf '\154\163')})
    <?phphighlight_file(__FILE__);classease{private$method;private$args;function__construct($method,$args){$this->method=$m......
  • 3_linux多线程
    3_linux多线程编程基本概念程序执行的最小单位进程是线程的容器,不是基本执行单位,是线程容器线程是进程中的不同执行路径,有独立的堆栈、局部变量(因为线程需要线程函数)......
  • [Rocky Linux] 使用btrfs
    使用btrfsrocky本身并没有btrfs的相关管理工具,所以需要自己安装,但是遗憾的发现它的源中啥也没有。只能考虑自己安装。相关说明btrfsWiki(kernel.org)可以从中得到项......
  • smb linux 挂载参考说明
    主要记录下linux挂载smb的配置以及包含密码的使用说明软件包准备yuminstallcifs-utils挂载包含认证的,使用credentials配置选项//ser......
  • mysql for linux :安装及删除
    官网:https://downloads.mysql.com/archives/community/在官网找到适合自己版本的mysql,个人选择的是5.7.27、Redhat操作系统、操作系统版本7,X86平台64位。可以直接下载,也......
  • Centos7最小安装配置|Linux
    0.前言Linux/Centos7最小化安装后需要做的几件事1.快速安装$yuminstall-ynet-tools$yuminstall-ycurl$yuminstall-ywget$yum-yinstallvim$yum......