精华内容
下载资源
问答
  • 大括号
    千次阅读
    2021-05-21 15:49:35

    大括号{}出现在shell脚本的各个角落,其用法也各有不同。同音多义字在汉语中最容易让人混淆,而大括号也正是bash语言中的“同音多义字”。下面小编就为大家介绍。

    {}第一种用法,符号扩展

    #!/bin/bash

    echo "{hello,world}"

    #######################

    # 输出为:"hello" "world"

    #######################

    echo {a..c} #只能是..

    ######################

    # 输出为: a b c

    ######################

    {}第二种用法,代码块表示法,与c语言中的作用相似,c语言中,有了{}的代码块,其变量作用域就改变了;bash中,却不存在这个功能,在{}中的内容,仍然与外部变量名相通。此外,{}代码块表示法还有一个作用,就是将代码块内所有的输入输出信息重定向。

    #脚本1

    #!/bin/bash

    a=123

    { a=321; } #大括号两边内部变量与大括号之间一定要用空格隔开

    echo "a = $a " #输出 a=321

    #脚本2

    #!/bin/bash

    File="`pwd`/fas" #fas是由自己在当前目录创建的.文件

    {

    read line1

    read line2

    } < $File #此处进行重定向,将fas文件的内容读入到line1和line2

    echo "First line in $File is: "

    echo "$line1"

    echo

    echo "second line in $File is :"

    echo "$line2"

    exit 0

    与大括号{}有些相似的符号是圆括号******。但圆括号()内的代码将启动一个子shell来运行,{}不会这样。

    #!/bin/bash

    a=123

    *** a=321; ***

    echo "a = $a" #a=123

    附注:

    1.如果想让你的脚本像ls等命令一样通用,那么需要将命令复制到/usr/local/bin,并使用chmod 777 filename修改其执行权限。

    2./bin目录、/sbin目录、/usr/local/bin/目录、/usr/local/sbin目录、/usr/bin目录、/usr/sbin目录的区别与联系

    最需要注意的一点,usr不是user的意思,而是unix system resource的简称,也就是unix系统资源。在/usr这个目录下,放了一些系统

    相同之处:都是一些命令;

    不同之处:

    /bin:基本命令

    /sbin:基本系统命令

    /usr/bin:与/bin类似,包括此后安装软件的命令

    /usr/sbin:与/sbin类似,包括此后增加的系统管理的一些命令

    /usr/local/bin:与/bin,/usr/bin类似,但是局部(local)范围,linux是多用户系统,有分级的权限,有些软件内容必须添加在/usr/local/bin,而不是/usr

    /usr/local/sbin:同上

    3.好脚本需要珍藏,以备不时之需。

    更多相关内容
  • 大括号

    2021-02-14 07:06:42
    大括号
  • 一、小括号()、中括号[]、大括号的区别  1>. 小括号():匹配小括号内的字符串,可以是一个,也可以是多个,常跟“|”(或)符号搭配使用,是多选结构的  示例1:string name = “way2014”; regex:(way|zgw) ...
  • 一、{ } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数。 如:var LangShen = {“Name”:”Langshen”,”AGE”:”28″}; 上面声明了一个名为“LangShen”的对象,多个属性或函数用,(逗号)...
  • css+div实现大括号.zip

    2021-03-10 17:42:39
    css+div实现大括号 1、完整的代码示例;2、清晰的效果图
  • 获取大括号小括号内容 项目开发用到了,暂做个简单记录 private static String regex = "\\{([^}]*)\\}";//匹配大括号 private static String regexx = "\\(([^}]*)\\)";//匹配小括号 public static void main...
  • 本文主要给大家介绍了关于C++11新特性之大括号初始化的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: C++11之前,C++主要有以下几种初始化方式: //小括号初始化 string str(hello); ...
  • 正则表达式的() [] {}有不同的意思。 () 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。 (\s*)表示连续空格的字符串。 []是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配...
  • 大括号符号创意极简学术风论文答辩ppt模板,本模板共12P,目录:论文摘要、选题背景及意义、研究方法与思路、关键技术难点、论文总结,大括号符号创意设计封面、几何风目录页、过渡页,经典红配色,扁平化图表,仿...
  • 两个插件,一个vs高亮插件,一个vs大括号闭合插件,如if、for 等等代码量很大的块,可以用大括号码闭合插件进行闭合,跟region类似,不能设置3,4分,只能弄个5分了。。。
  • 大括号总分关系PPT模板.pptx
  • 第 第 PAGE 1 页 共 NUMPAGES 1 页 c语言大括号的用法 大括号{}出现在shell脚本的各个角落其用法也各有不同同音多义字在汉语中最容易让人混淆而大括号也正是bash语言中的同音多义字下面小编就为大家介绍c语言大括号...
  • 24款大括号符号笔刷是一款非常实用的PS笔刷增强辅助工具。一共有24款不同形状的高分辨率的大括号符号,在配上不同的颜色,调设不同大小,可以为你的作品添加更好的作品,需要的朋友赶快来下载大括号符号笔刷中文版。...
  • IndentGuidev14 支持 vs2010 - vs2012 ,双击安装即可 .
  • 一年级用数学大括号和问号PPT课件.pptx
  • 假设一个算术表达式可以包含三种括号:“(”和“)”,方括号“[”和“]”,及花括号“ { ”和“ } ”,且这三种括号可嵌套使用。试设计算法判断给定表达式中所含括号是否配对出现。
  • Excel大括号{}数据的使用.docx
  • 使用快速键盘快捷键将光标从一个大括号/方括号/括号跳转到其匹配的对应项: Ctrl-Shift-[ (包括 Mac - 不使用 ⌘)。 如果光标已经在大括号/括号/括号上,它将移动到相反的匹配对应项 如果光标不在任何大括号/括号...
  • 大括号总分关系PPT模板下载。
  • 一、shell中的大括号(也叫花括号) "{}"的用法: 1、${var} Linux之shell中的大括号、中括号、小括号的使用详解+多示例 [root@Legion100 ~]# var=lookback [root@Legion100 ~]# echo "Legion$var" Legionlookback ...
    一、shell中的大括号(也叫花括号) "{}"的用法:
    
    1、${var} 
    Linux之shell中的大括号、中括号、小括号的使用详解+多示例
    
    [root@Legion100 ~]# var=lookback
    [root@Legion100 ~]# echo "Legion$var"
    Legionlookback
    [root@Legion100 ~]# echo "$varLegion"
    
    [root@Legion100 ~]# echo "${var}Legion"
    lookbackLegion
    [root@Legion100 ~]# 
    解释:当变量名和后面的内容都是变量命名所允许的内容时候这时候直接用$var是不行的得用{}把变量名括起来
    
    2、${var:-string}
    Linux之shell中的大括号、中括号、小括号的使用详解+多示例
    
    [root@Legion100 ~]# var=""
    [root@Legion100 ~]# echo ${var:-a}
    a
    [root@Legion100 ~]# var=lookback
    [root@Legion100 ~]# echo ${var:-a}
    lookback
    [root@Legion100 ~]# 
    解释:当变量var值为空时${var:-a}会吧a作为值,当变量var值不为空时,${var:-a}会吧var的值作为变量
    
    3、${var:+string}
    Linux之shell中的大括号、中括号、小括号的使用详解+多示例
    
    [root@Legion100 ~]# var=""
    [root@Legion100 ~]# echo ${var:+a}
    
    [root@Legion100 ~]# var=lookback
    [root@Legion100 ~]# echo ${var:+a}
    a
    [root@Legion100 ~]#
    解释:${var:+a}的替换规则和上面的相反,即当变量var的值不为空的时将值换成a,当变量var为空时则不替换或者说是替换成变量var的值,即空值。(因为变量var此时为空,所以这两种说法我认为是一样的)
    
    4、${var:=string}
    Linux之shell中的大括号、中括号、小括号的使用详解+多示例
    
    [root@Legion100 ~]# var=""
    [root@Legion100 ~]# echo ${var:=a}
    a
    [root@Legion100 ~]# echo ${var:=b}
    a
    [root@Legion100 ~]# echo $var
    a
    [root@Legion100 ~]# var=lookback
    [root@Legion100 ~]# echo ${var:=a}
    lookback
    [root@Legion100 ~]# echo ${var:=b}
    lookback
    [root@Legion100 ~]# echo $var
    lookback
    [root@Legion100 ~]#
    解释:当变量var值为空时,${var:=a}会将其赋值为a,且变量var也被赋值是a了,若变量var不为空时,${var:=string}的值都是变量var的值。(很常用的一种用法是,判断某个变量是否赋值,没有的话则给它赋上一个默认值。)
    
    5、${var:?string}
    Linux之shell中的大括号、中括号、小括号的使用详解+多示例
    
      1 #!/bin/bash
      2 #########################################################################
      3 # File Name: 123.sh
      4 # Author: LookBack
      5 # Email: admin#05hd.com
      6 # Version:
      1 #!/bin/bash
      1 #!/bin/bash
      1 #!/bin/bash
      1 #!/bin/bash
      2 #########################################################################
      3 # File Name: 123.sh
      4 # Author: LookBack
      5 # Email: admin#dwhd.org
      6 # Version:
      7 # Created Time: 2015年07月08日 星期三 20时57分26秒
      8 #########################################################################
      9
     10 var=lookback
     11 echo ${var:?Legion}
     12 var=""
     13 echo ${var:?Legion}
     14 echo test
     15
    ~/123.sh [FORMAT=unix] [TYPE=SH] [POS=15,1][100%] 15-07-08 - 21:03:06
    "123.sh" 15L, 366C [w]
    [root@Legion100 ~]# bash 123.sh
    lookback
    123.sh: line 13: var: Legion
    [root@Legion100 ~]# echo $?
    1
    [root@Legion100 ~]# 
    解释:若变量var不为空,则用变量var的值来替换${var:?string};若变量var为空,则把string输出到标准错误中,并从脚本中退出。我们可利用此特性来检查是否设置了变量的值。
    
    6、扩展
    Linux之shell中的大括号、中括号、小括号的使用详解+多示例
    
    [root@Legion100 ~]# var=""
    [root@Legion100 ~]# echo ${var:-a}
    a
    [root@Legion100 ~]# a=Legion
    [root@Legion100 ~]# echo ${var:-$a}
    Legion
    [root@Legion100 ~]# echo ${var:-$(date +%F)}
    2015-07-08
    [root@Legion100 ~]# 
    说明:你们以为a这个位置只能常量?答案是否定的照样可以是其他变量名或者一个命令。
    
    7、${var%pattern}
    Linux之shell中的大括号、中括号、小括号的使用详解+多示例
    
    [root@Legion100 ~]# var=lookbacklookbacklookback
    [root@Legion100 ~]# echo ${var%b*}
    lookbacklookbacklook
    [root@Legion100 ~]# 
    解释:${variable%pattern},这种模式时,shell在variable中查找,看它是否一给的模式pattern结尾,如果是,就从命令行把variable中的内容去掉右边最短的匹配模式
    
    8、${var%%pattern}
    Linux之shell中的大括号、中括号、小括号的使用详解+多示例
    
    [root@Legion100 ~]# var=lookbacklookbacklookback
    [root@Legion100 ~]# echo ${var%%b*}
    look
    [root@Legion100 ~]# 
    解释:${variable%%pattern},这种模式时,shell在variable中查找,看它是否一给的模式pattern结尾,如果是,就从命令行把variable中的内容去掉右边最长的匹配模式
    
    9、${var#pattern}
    Linux之shell中的大括号、中括号、小括号的使用详解+多示例
    
    [root@Legion100 ~]# var=lookbacklookbacklookback
    [root@Legion100 ~]# echo ${var#*b}
    acklookbacklookback
    [root@Legion100 ~]# 
    解释:${variable#pattern} 这种模式时,shell在variable中查找,看它是否一给的模式pattern开始,如果是,就从命令行把variable中的内容去掉左边最短的匹配模式
    
    10、${var##pattern}
    Linux之shell中的大括号、中括号、小括号的使用详解+多示例
    
    [root@Legion100 ~]# var=lookbacklookbacklookback
    [root@Legion100 ~]# echo ${var#*b}
    acklookbacklookback
    [root@Legion100 ~]# echo ${var##*b}
    ack
    [root@Legion100 ~]# 
    解释: ${variable##pattern} 这种模式时,shell在variable中查找,看它是否一给的模式pattern结尾,如果是,就从命令行把variable中的内容去掉右边最长的匹配模式
    
    11、{1,2,3}和{1..n}
    Linux之shell中的大括号、中括号、小括号的使用详解+多示例
    
    [root@Legion100 ~]# ls -lh
    总用量 72K
    -rw-------. 1 root root 10K 5月  31 05:13 anaconda-ks.cfg
    -rw-r--r--. 1 root root 44K 5月  31 05:13 install.log
    -rw-r--r--. 1 root root 11K 5月  31 05:05 install.log.syslog
    [root@Legion100 ~]# touch {a,b,c,d}_testFile
    [root@Legion100 ~]# ls -lh
    总用量 72K
    -rw-------. 1 root root 10K 5月  31 05:13 anaconda-ks.cfg
    -rw-r--r--  1 root root   0 7月   9 00:21 a_testFile
    -rw-r--r--  1 root root   0 7月   9 00:21 b_testFile
    -rw-r--r--  1 root root   0 7月   9 00:21 c_testFile
    -rw-r--r--  1 root root   0 7月   9 00:21 d_testFile
    -rw-r--r--. 1 root root 44K 5月  31 05:13 install.log
    -rw-r--r--. 1 root root 11K 5月  31 05:05 install.log.syslog
    [root@Legion100 ~]# touch {1..5}_testFile
    [root@Legion100 ~]# ls -lh
    总用量 72K
    -rw-r--r--  1 root root   0 7月   9 00:21 1_testFile
    -rw-r--r--  1 root root   0 7月   9 00:21 2_testFile
    -rw-r--r--  1 root root   0 7月   9 00:21 3_testFile
    -rw-r--r--  1 root root   0 7月   9 00:21 4_testFile
    -rw-r--r--  1 root root   0 7月   9 00:21 5_testFile
    -rw-------. 1 root root 10K 5月  31 05:13 anaconda-ks.cfg
    -rw-r--r--  1 root root   0 7月   9 00:21 a_testFile
    -rw-r--r--  1 root root   0 7月   9 00:21 b_testFile
    -rw-r--r--  1 root root   0 7月   9 00:21 c_testFile
    -rw-r--r--  1 root root   0 7月   9 00:21 d_testFile
    -rw-r--r--. 1 root root 44K 5月  31 05:13 install.log
    -rw-r--r--. 1 root root 11K 5月  31 05:05 install.log.syslog
    [root@Legion100 ~]# 
    二、shell中的中括号(也叫方括号) "[ ]"的用法:
    
    1、单中括号 []
    
    ①bash 的内部命令,[和test是等同的。如果我们不用绝对路径指明,通常我们用的都是bash自带的命令。if/test结构中的左中括号是调用test的命令标识,右中括号是关闭条件判断的。这个命令把它的参数作为比较表达式或者作为文件测试,并且根据比较的结果来返回一个退出状态码。if/test结构中并不是必须右中括号,但是新版的Bash中要求必须这样。
    
    ②Test和[]中可用的比较运算符只有==和!=,两者都是用于字符串比较的,不可用于整数比较,整数比较只能使用-eq,-gt这种形式。无论是字符串比较还是整数比较都不支持大于号小于号。如果实在想用,对于字符串比较可以使用转义形式,如果比较"ab"和"bc":[ ab \< bc ],结果为真,也就是返回状态为0。[ ]中的逻辑与和逻辑或使用-a 和-o 表示。
    
    ③字符范围。用作正则表达式的一部分,描述一个匹配的字符范围。作为test用途的中括号内不能使用正则。
    
    ④在一个array 结构的上下文中,中括号用来引用数组中每个元素的编号。
    
    2、双中括号[[ ]]
    
    ①[[是 bash 程序语言的关键字。并不是一个命令,[[ ]] 结构比[ ]结构更加通用。在[[和]]之间所有的字符都不会发生文件名扩展或者单词分割,但是会发生参数扩展和命令替换。
    
    ②支持字符串的模式匹配,使用=~操作符时甚至支持shell的正则表达式。字符串比较时可以把右边的作为一个模式,而不仅仅是一个字符串,比如[[ hello == hell? ]],结果为真。[[ ]] 中匹配字符串或通配符,不需要引号。
    
    ③使用[[ ... ]]条件判断结构,而不是[ ... ],能够防止脚本中的许多逻辑错误。比如,&&、||、<和> 操作符能够正常存在于[[ ]]条件判断结构中,但是如果出现在[ ]结构中的话,会报错。
    
    ④bash把双中括号中的表达式看作一个单独的元素,并返回一个退出状态码。
    
    三、shell中的小括号 "( )"的用法:
    
    1、()用法
    
    ①、() 数组赋值
    
    Linux之shell中的大括号、中括号、小括号的使用详解+多示例
    
    [root@Legion100 ~]# a=(a b c d)
    [root@Legion100 ~]# echo ${#a[*]}
    4
    [root@Legion100 ~]# echo ${#a[@]}
    4
    [root@Legion100 ~]# echo ${a[1]}
    b
    [root@Legion100 ~]# echo ${a[0]}
    a
    [root@Legion100 ~]# 
    ②、() 子shell赋值
    
    Linux之shell中的大括号、中括号、小括号的使用详解+多示例
    
    [root@Legion100 ~]# (var=lookback;echo $var)
    lookback
    [root@Legion100 ~]# echo $var
    
    [root@Legion100 ~]#
    在子shell中变量var值为lookback,但是在上级shell中就不是这个值,可以看出是在子shell中有效的赋值
    
    ③、() 命令集合结果重定向
    
    Linux之shell中的大括号、中括号、小括号的使用详解+多示例
    
    [root@Legion100 ~]# (echo "a";echo "b"; ) | awk '{print NR,$0}'
    1 a
    2 b
    [root@Legion100 ~]# 
    2、$()用法
    这个就不多说了应该都知道
    Linux之shell中的大括号、中括号、小括号的使用详解+多示例
    
    [root@Legion100 ~]# echo "$(ls -l)"
    总用量 72
    -rw-------. 1 root root 10161 5月  31 05:13 anaconda-ks.cfg
    -rw-r--r--. 1 root root 44528 5月  31 05:13 install.log
    -rw-r--r--. 1 root root 10260 5月  31 05:05 install.log.syslog
    [root@Legion100 ~]# date
    2015年 07月 08日 星期三 23:48:26 CST
    [root@Legion100 ~]# echo "date"
    date
    [root@Legion100 ~]# echo "$(date)"
    2015年 07月 08日 星期三 23:48:40 CST
    [root@Legion100 ~]# 
    3、(())用法
    Linux之shell中的大括号、中括号、小括号的使用详解+多示例
    
    [root@Legion100 ~]# echo $((3+2))
    5
    [root@Legion100 ~]# echo $((10/2))
    5
    [root@Legion100 ~]# echo $((3*2))
    6
    [root@Legion100 ~]# echo $((3-2))
    1
    [root@Legion100 ~]# echo $((25>3 ? 2:3))
    2
    [root@Legion100 ~]# echo $((25<3 ? 2:3))
    3
    [root@Legion100 ~]# echo $((a=2+3))
    5
    [root@Legion100 ~]# echo $a
    5
    [root@Legion100 ~]# echo $((a+=2))
    7
    [root@Legion100 ~]# echo $a
    7
    [root@Legion100 ~]# echo $((a+=2))
    9
    [root@Legion100 ~]# echo $a
    9
    [root@Legion100 ~]# 

     

    展开全文
  • Python如何正确保留大括号

    千次阅读 2021-01-19 20:36:16
    无论是f表达式还是字符串的.format方法,我们都可以使用大括号作为占位符,来填充数据。例如: >>>name='kingname' >>>print(f'我的名字是:{name}') 我的名字是:kingname >>>print(f...

    自从Python 3.6开始,引入了f表达式(f-string),这使得Python在填充字符串时可以进行一些简单的计算。并且f表达式的运算速度是字符串.format方法的很多倍。

    无论是f表达式还是字符串的.format方法,我们都可以使用大括号作为占位符,来填充数据。例如:

    >>> name = 'kingname'
    >>> print(f'我的名字是:{name}')
    我的名字是:kingname
    >>> print(f'1+1的结果为:{1 + 1}')
    1+1的结果为:2
    >>> salary = 999999
    >>> print('我的月薪是:{salary}'.format(salary=salary))
    我的月薪是:999999
    

    但现在问题来了,如果我希望在使用f表达式或者.format方法填充内容的同时,又能保留大括号应该怎么办呢?

    举个例子,在写爬虫的时候,我需要使用正则表达式从当前URL中提取当前的页数:page=\d{0,3}。但是,对于不同的网站,表示页数的这个参数名可能是不一样的,有些是page=xxx,有些是Pag=xxx,有些是pageNo=xxx,有些是p=xxx。所以我想动态生成这个正则表达式。

    如果我们直接使用f表达式或者.format方法,就会报错:

    >>> page_name = 'page'
    >>> page_regex_template = '{page_name}=\d{0,3}'
    >>> print(page_regex_template.format(page_name=page_name))
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: '0,3'
    

    为了能够正常生成正则表达式,可能有人会想到使用古老的%s占位符:

    >>> page_name = 'page'
    >>> page_regex_template = '%s=\d{0,3}'
    >>> print(page_regex_template % page_name)
    page=\d{0,3}
    

    虽然确实可行,但是混用两种填充字符串的方法,代码会变得不好维护,而且%s这种占位符填充速度也非常慢。

    实际上,在Python的f表达式和.format方法中,如果你需要保留大括号,那么只需要写成大括号套大括号的形式就行了:

    >>> page_name = 'page'
    >>> page_regex_template = '{page_name}=\d{{0,3}}'
    >>> print(page_regex_template.format(page_name=page_name))
    page=\d{0,3}
    

    大括号里面的第一层大括号会自动失效,变成普通的字符。但如果是大括号套大括号套大括号,那么最里面的一对大括号会继续生效充当占位符,例如:

    >>> page_name = 'page'
    >>> page_range = '0,5'
    >>> page_regex_template = '{page_name}=\d{{{page_range}}}'
    >>> print(page_regex_template.format(page_name=page_name, page_range=page_range))
    page=\d{0,5}
    

    总结起来就是,如果从外向内数,如果最外层大括号称为第1层,那么,第奇数层的大括号用来填充数据,第偶数层的大括号就是普通的字符。因此,如果不考虑代码可读性,如果我们需要最终生成的字符串本身就是嵌套大括号的形式,我们还可以进一步写成:

    >>> ugly_string = '2层嵌套大括号:{{{{{variable}}}}}'
    >>> print(ugly_string.format(variable=variable))
    2层嵌套大括号:{{name}}
    >>> ugly_string = '3层嵌套大括号:{{{{{{{variable}}}}}}}'
    >>> print(ugly_string.format(variable=variable))
    3层嵌套大括号:{{{name}}}
    

    假设我们希望最终输出的字符串里面,保留n层大括号,那么在代码里面,我们需要写2n + 1层大括号。大家也看出来了,如果你要这样写,数大括号的个数都要把你的眼镜数瞎。所以,在实际开发中,大括号的层数绝对不要超过2层

    以下内容供学有余力的同学阅读。

    上面讲到的方法,适用于大括号成对出现的情况,如果大括号只有半边,例如有些网站的正文信息是以JSON格式写在源代码里面的,于是我们可以使用正则表达式提取出包含正文的JSON然后进一步处理,一般来说,正则表达式可能是这样的:content=(\{);。不过,有的网站用的单词是content,有的网站用的是detail,所以这个地方需要填充,如果我们像往常那样写,那么还是会报错,例如:

    >>> content_name = 'detail'
    >>> content_json_template = '{content_name}=({\{})$'
    >>> print(content_json_template.format(content_name=content_name))
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: unexpected '{' in field name
    

    套一层不行,那我们看看套两层如何:

    >>> content_name = 'detail'
    >>> content_json_template = '{content_name}=({{\{}})$'
    >>> print(content_json_template.format(content_name=content_name))
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: Replacement index 0 out of range for positional args tuple
    

    套两层还是错。

    如果字符串不含反斜杠,我们可以使用f表达式配合引号包住半边大括号来实现,例如:

    >>> name = 'kingname'
    >>> print(f'我的名字是:{name},我的参数是:{"{"}')
    我的名字是:kingname,我的参数是:{
    

    但问题是,f表达式里面是不允许出现反斜杠的,否则会报错:

    >>> content_name = 'detail'
    >>> content_regex = f'{content_name}=({\"{"})$'
      File "<stdin>", line 1
    SyntaxError: f-string expression part cannot include a backslash
    

    .format方法支持反斜杠,但它又不支持引号包住单边大括号的写法:

    >>> name = 'kingname'
    >>> print('我的名字是:{name},我的参数是:{"{"}'.format(name=name))
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: unexpected '{' in field name
    

    遇到这种情况,我们应该怎么解决呢?只要把思路放开,灵活变通,能找出很多方法,这里仅举两例:

    把大括号放到值里面

    把思路调整过来,既然大括号不能放在句子模板里面,那我们就放在被填充的值里面:

    # 使用.format方法
    >>> name = 'kingname'
    >>> brace = '{'
    >>> print('我的名字是:{name},我的参数是:{brace}'.format(name=name, brace=brace))
    我的名字是:kingname,我的参数是:{
        
    # 使用f表达式
    >>> content_name = 'detail'
    >>> brace = '\{'
    >>> print(f'{content_name}=({brace})$')
    detail=(\{)$
    

    不要忘记字符串拼接

    大家最容易犯的一个问题就是学了新的东西,就忘记了旧的,实际上用字符串拼接也能解决问题:

    >>> content_name = 'detail'
    >>> content_json = content_name + '=(\{)$'
    >>> print(content_json)
    detail=(\{)$
    展开全文
  • 在cad中给字符加大括号,目前一次只能应用于一个字符
  • c语言大括号怎么用

    千次阅读 2021-05-18 10:37:40
    c语言大括号怎么用大括号{}出现在shell脚本的各个角落,其用法也各有不同。同音多义字在汉语中最容易让人混淆,而大括号也正是bash语言中的“同音多义字”。下面小编就为大家介绍c语言大括号的用法。{}第一种用法,...

    c语言大括号怎么用

    大括号{}出现在shell脚本的各个角落,其用法也各有不同。同音多义字在汉语中最容易让人混淆,而大括号也正是bash语言中的“同音多义字”。下面小编就为大家介绍c语言大括号的用法。

    {}第一种用法,符号扩展

    #!/bin/bash

    echo "{hello,world}"

    #######################

    # 输出为:"hello" "world"

    #######################

    echo {a..c} #只能是..

    ######################

    # 输出为: a b c

    ######################

    {}第二种用法,代码块表示法

    与c语言中的作用相似,c语言中,有了{}的.代码块,其变量作用域就改变了;bash中,却不存在这个功能,在{}中的内容,仍然与外部变量名相通。此外,{}代码块表示法还有一个作用,就是将代码块内所有的输入输出信息重定向。

    #脚本1

    #!/bin/bash

    a=123

    { a=321; } #大括号两边内部变量与大括号之间一定要用空格隔开

    echo "a = $a " #输出 a=321

    #脚本2

    #!/bin/bash

    File="`pwd`/fas" #fas是由自己在当前目录创建的文件

    {

    read line1

    read line2

    } < $File #此处进行重定向,将fas文件的内容读入到line1和line2

    echo "First line in $File is: "

    echo "$line1"

    echo

    echo "second line in $File is :"

    echo "$line2"

    exit 0

    与大括号{}有些相似的符号是圆括号()。但圆括号()内的代码将启动一个子shell来运行,{}不会这样。

    #!/bin/bash

    a=123

    ( a=321; )

    echo "a = $a" #a=123

    附注:

    1.如果想让你的脚本像ls等命令一样通用,那么需要将命令复制到/usr/local/bin,并使用chmod 777 filename修改其执行权限。

    2./bin目录、/sbin目录、/usr/local/bin/目录、/usr/local/sbin目录、/usr/bin目录、/usr/sbin目录的区别与联系

    最需要注意的一点,usr不是user的意思,而是unix system resource的简称,也就是unix系统资源。在/usr这个目录下,放了一些系统

    相同之处:都是一些命令;

    不同之处:

    /bin:基本命令

    /sbin:基本系统命令

    /usr/bin:与/bin类似,包括此后安装软件的命令

    /usr/sbin:与/sbin类似,包括此后增加的系统管理的一些命令

    /usr/local/bin:与/bin,/usr/bin类似,但是局部(local)范围,linux是多用户系统,有分级的权限,有些软件内容必须添加在/usr/local/bin,而不是/usr

    /usr/local/sbin:同上

    3.好脚本需要珍藏,以备不时之需。

    展开全文
  • 大括号用法

    2021-11-26 11:10:57
    大括号用法表面上看好像很简单,实质上里面包含了很多使用规则,让我们一起来学习一下大括号“{}”的使用方法。 用法一 大括号用来做初始化列表,如下: int buff[10] = {1,3,1,4}; 再举一个复杂一点的结构体初始化...
  • 使用word时很多朋友都不知道怎么输入大括号,对于办公的人,例如一名试卷编辑工作者,经常要用到各种各样的特殊符号。其中,不乏在电脑上很难打出来的特殊字符。比如:大括号字符。下面,小编就来跟大家介绍word...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 816,586
精华内容 326,634
关键字:

大括号

友情链接: _opencvHandleImg-master.zip