首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Shell Style Guide

如果一行容得下整个管道操作,那么请将整个管道操作写在同一行,管道左右应有空格。 否则,应该将整个管道操作分割成每行一段,管道操作的下一部分应该将管道符放在新行并且缩进4个空格。...do_something; then err "Unable to do_something" exit "${E_DID_NOTHING}" fi 编程实践 变量扩展 通常情况下推荐为变量加上大括号如...# 无大括号产生歧义场景:以下会被解析为 "${1}0${2}0${3}0", # 而非 "${10}${20}${30} set -- a b c echo "$10$20$30" 变量引用 变量引用通常情况下应遵循以下原则...: 默认情况下推荐使用引号引用包含变量、命令替换符、空格或shell元字符的字符串 在有明确要求必须使用无引号扩展的情况下,可不用引号 字符串为单词类型时才推荐用引号,而非命令选项或者路径名 不要对整数使用引号..."f*"(本例为不匹配) if [[ "filename" == "f*" ]]; then echo "Match" fi # 示例3:[]中右侧不加引号将出现路径扩展,如果当前目录下有f开头的多个文件将报错

7.5K10

sh脚本

字符扩展 * 字符扩展 方括号扩展 大括号扩展 变量扩展 子命令扩展 算术扩展 Bash 允许用户关闭扩展。...字符串操作 获取字符串长度 ${#varname} 例子 $ myPath=/home/cam/book/long.file.name $ echo ${#myPath} 29 大括号{}是必需的,否则...上面例子中,echo命令的-e参数,表示将替换后的字符串的\n字符,解释为换行符。 前面提到过,这个语法还有两种扩展形式。...getopts 命令 getopts命令用在脚本内部,可以解析复杂的脚本命令行参数,通常与while循环一起使用,取出脚本所有的带有前置连词线(-)的参数。...getopts optstring name 它带有两个参数。第一个参数optstring是字符串,给出脚本所有的连词线参数。getopts规定带有参数值的配置项参数,后面必须带有一个冒号(:)。

10.8K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ES6 语法大全上

    是一个参数数组 模板字符串 模板字符串是增强版的字符串,用反引号 ` 标识,他可以当做普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量; 使用反引号 ` 将整个字符串包裹起来,${}包裹一个变量或者表达式...,如果变量没有声明,则报错,大括号中的值不是字符串,将按照一定的规则转化为字符串 如果在字符串中需要使用反引号,则需要在其前面用反斜杠转义(如 \\ `); 静态字符串一律使用单引号或反引号,不使用双引号...,上面例子等同于 let {bar:bar,foo:bar}={foo:'111',bar:'222'} console.log(bar,foo); //222 111 函数的扩展 ES6 允许为函数的参数设置默认值...,实际上这个参数是无法省略的 ES6 允许为函数的参数设置默认值表达式,即直接把参数写成表达式 function bar(val) { console.log( "bar called!"...z = x * 2 + y; y++; x *= 3; return (x + y + z) / 2; }; 由于大括号被解析为代码块,所以如果箭头函数直接返回一个对象,必须在对象外面加上括号

    20210

    SHELL(bash)脚本编程四:其他扩展

    :gs/string1/string2/ 别名扩展 另一个默认时只能在交互式shell中使用的扩展是别名扩展。 当单词作为简单命令的第一个单词时,bash允许用字符串来替换这个单词(别名)。...别名扩展是完全基于文本的,因而别名可以改变shell语法。几乎任何别名的作用,都可以用shell函数来实现。 大括号扩展 大括号扩展是一种生成任意字符串的机制。...一个正确的大括号扩展格式必须包含非引用的大括号{},和至少一个非引用的逗号或序列表达式。任何不正确的格式将保持原样。在大括号中,如需要{或,保持它们的字面意思,可以在字符前添加一个反斜线\。...,但大括号扩展并不需要文件是存在的。...shell运行一个命令,收集其输出,然后将输出作为展开的值。 命令替换的一个问题是命令的立即执行然后等待结果,此过程中shell无法传入输入。

    75730

    ES6 解构赋值详解

    解构赋值是对赋值运算符的扩展,可以将属性/值从对象/数组中取出,赋值给其他变量。 一、数组的解构赋值 1、基本用法 只要等号两边的模式相同,左边的变量就会被赋予对应的值。...Unexpected token = 解决方法:在第二行代码加上“()” let a; const obj = { a:"aaa" }; ({a} = obj); a // "aaa" 上面代码中,解析器会将起首的大括号...var {a = 1} = {a: undefined}; a // 1 var {a = 3} = {a: null}; a // null 如果将大括号写在行首,JavaScript 会将其解释为代码块...// 解决方法 ({x} = {x: 1}); 三、字符串的解构赋值 字符串也可以解构赋值,因为字符串被转换成了一个类似数组的对象。...解构赋值的规则是,只要等号右边的值不是对象,就先将其转为对象。 由于undefined和null无法转为对象,所以对它们进行解构赋值,都会报错。

    79820

    谈谈ES6语法(汇总上篇)

    不存在变量提升 console.log(a); // undefined var a = 100; var命令会发生变量提升现象,即变量可以在声明之前使用,值为undefined;而let纠正了这种行为...解构可以理解就是一个作用:简化你变量赋值的操作。...2)); // ["r", "e"] 返回删除的数组(能使用数组的方法了) 字符串扩展 针对字符串扩展这个,个人感觉模版字符串使用的频率比较高。...模版字符串解放了拼接字符串带来的繁琐操作的体力劳动。 let name = 'jiaming'; let str = 'Hello! My name is '+ name + '....(): 返回布尔值,表示参数字符串是否在原字符串的尾部 trimStart(): 返回字符串,表示消除参数字符串开头的空格 trimEnd(): 返回字符串,表示消除参数字符串结尾的空格 数值扩展 留意下在

    71520

    如何在 Debian 和 Ubuntu 系统上安装升级 PHP 8.2

    PHP 8.2 带来了主要的新功能,如只读类、新 random 扩展、敏感参数编辑以及语言简化更改,包括弃用动态属性和与字符串内插相关的弃用。...Ondrej的存储库是主要和最新的存储库,提供PHP包和PECL扩展到基于Debian和Ubuntu的操作系统,并用于所有PHP。观看有关在这些系统上安装 PHP 的指南。...PHP 8.2 确实添加了一个名为 random 的新扩展,但这个扩展始终是一个捆绑的扩展,没有它就无法编译 PHP。...清除旧的 PHP 软件包 以下命令将删除较旧的 PHP 版本。建议在验证 PHP 8.2 安装正常工作之前不要删除它们。...默认情况下,默认 php 名称将符号链接到最新的 PHP 版本,但可以更改默认 php 命令链接到的位置。

    1.6K41

    tcl三部曲(一)、替换、引用与匹配

    一条命令中可以含有任意多个单词,每个单词都可以是任意的字符串值,分隔单词的空白不是单词的一部分,分隔命令的换行符也不是单词的一部分。...下例中使用incr指令进行说明,aa为参数名,$bb为要+的整数,[expression]的返回值为相加的和(运行环境为DC): ? 再以一个glob查找操作进行说明(运行环境:vivado): ?...,解析得到的结果为各个元素,此时删除操作就会成功。...$的转换,将调用$解析成字符串$。...整个过程块都在大括号中,他会原封不动的传递给proc,在解析proc命令时变量list的值不会被替换进来。在每次调用这个过程时$list都需要读入不同的值。

    3.9K11

    Linux Shell 中的 ()、(())、]、{} 怎么用是不是还傻傻分不清?

    ((exp))结构扩展并计算一个算术表达式的值,如果表达式的结果为0,那么返回的退出状态码为1,或者 是"假",而一个非零值的表达式所返回的退出状态码将为0,或者是"true"。...在[[和]]之间所有的字符都不会发生文件名扩展或者单词分割,但是会发生参数扩展和命令替换。 ②支持字符串的模式匹配,使用=~操作符时甚至支持shell的正则表达式。...(通配(globbing))将对大括号中的文件名做扩展。在大括号中,不允许有空白,除非这个空白被引用或转义。第一种:对大括号中的以逗号分割的文件列表进行拓展。...第三种模式:${var/pattern/pattern}表示将var字符串的第一个匹配的pattern替换为另一个pattern。...第四种模式:${var//pattern/pattern}表示将var字符串中的所有能匹配的pattern替换为另一个pattern。

    4.1K20

    shell中各种括号的作用()、(())、]、{}「建议收藏」

    ((exp))结构扩展并计算一个算术表达式的值,如果表达式的结果为0,那么返回的退出状态码为1,或者 是”假”,而一个非零值的表达式所返回的退出状态码将为0,或者是”true”。...在[[和]]之间所有的字符都不会发生文件名扩展或者单词分割,但是会发生参数扩展和命令替换。 ②支持字符串的模式匹配,使用=~操作符时甚至支持shell的正则表达式。...(通配(globbing))将对大括号中的文件名做扩展。在大括号中,不允许有空白,除非这个空白被引用或转义。第一种:对大括号中的以逗号分割的文件列表进行拓展。...第三种模式:{var/pattern/pattern}表示将var字符串的第一个匹配的pattern替换为另一个pattern。。...第四种模式:{var//pattern/pattern}表示将var字符串中的所有能匹配的pattern替换为另一个pattern。

    4K40

    《JavaScript 模式》读书笔记(2)— 基本技巧3

    func() { // 因为这里隐式的加了分号 return undefined; { name:"Batman" }; } // 总之,应该一直使用大括号并直到将开放的大括号放置在前面语句的同一行...a, b, c) 在函数声明的大括号之前:function myFunc() {} 在匿名函数表达式之后:var myFunc = function () {}   空格的另外一个作用是用来分隔所有的操作符和操作...编写注释 为代码编写注释一定是十分重要的,比注释更为重要的,是及时不断的更新注释。...而优点在于该系统具有普适性,可以通过这样的方法为其他任何语言编写注释。...我们要知道一件事,就是,写代码是一个持续迭代的过程,是无法一蹴而就的。我们需要在持续的迭代中优化代码,精简代码。

    47730

    shell中的括号(小括号,中括号,大括号)

    等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令。有些shell不支持,如tcsh。    ...((exp))结构扩展并计算一个算术表达式的值,如果表达式的结果为0,那么返回的退出状态码为1,或者 是"假",而一个非零值的表达式所返回的退出状态码将为0,或者是"true"。...在[[和]]之间所有的字符都不会发生文件名扩展或者单词分割,但是会发生参数扩展和命令替换。     ②支持字符串的模式匹配,使用=~操作符时甚至支持shell的正则表达式。...字符串比较时可以把右边的作为一个模式,而不仅仅是一个字符串,比如[[ hello == hell? ]],结果为真。[[ ]] 中匹配字符串或通配符,不需要引号。    ...三)大括号、花括号 {}   1、常规用法。     ①大括号拓展。(通配(globbing))将对大括号中的文件名做扩展。在大括号中,不允许有空白,除非这个空白被引用或转义。

    3.9K10

    shell脚本编程之路1

    答:Shell(壳)本身是一个用C语言编写的程序也是一个是解释执行的脚本语言即命令解释器,它在操作系统最外层是用户使用Unix/Linux的桥梁,把用户输入解释给操作系统等待操作系统处理后,将结果输出返回给用户...初始化数组: 如:array=(a b c d) 2.双小括号 (( )) 整数扩展 扩展计算是整数型的计算不支持浮点型((exp))结构扩展并计算一个算术表达式的值 如果表达式的结果为0,那么返回的退出状态码为...、花括号 {} 常规用法: 大括号拓展:通配(globbing))将对大括号中的文件名做扩展。...四种模式字符串提取和替换: #第一种:对大括号中的以逗号分割的文件列表进行拓展。如 touch {a,b}.txt 结果为a.txt b.txt。...* B:braceexpand 大括号扩展。

    2.7K20

    「大众点评点餐」小程序开发经验 02:视图

    数据绑定 数据绑定是最简单的使用数据方式。采用 Mustache 语法的变量替换,用双大括号将变量名包起来,包括组件的属性也可以使用变量。 小程序还支持 ES 6 规范的扩展运算符 ......逻辑运算 双大括号中,可进行一些简单运算操作,包括四则运算、三目运算、逻辑判断、字符串拼接等。 3....以上属性的值都可以用字符串,但值中不要使用 - 等符号。例如 dish-item,在使用时,小程序会将 {{dish-item}} 中的 - 解析成减号,造成取值失败。...这样的操作,相当于是将整个文件里的代码拷贝到 include 位置,所以无法传入参数。...绑定事件 事件名称为字符串,会默认传入 event 参数,无法定制其他参数。 我们一般将所需参数通过 data- 属性,绑定至组件,再通过 e.currentTarget.dataset 获取。

    3K30

    eslint+prettier学习

    if语句如果没有包大括号不会加大括号,会从两行转为一行 多个import后面加一个空行 字符串使用单引号 缩进为2个空格 未定义的变量会报错 箭头函数前后需要空格 未使用的变量会报错 standard...(触发时退出代码为1) parserOptions:{} 解析器选项,主要用于解析JavaScript的语言选项 ecmaVersion:JavaScript版本 sourceType:script还是...使用项目中的eslint,命令为    npx eslint --fix **/*.js webpack eslint配置 { test: /\.js$/, use: [ {...减轻 eslint 等工具的校验规则,因为将代码样式校验交给了 prettier,所以可以将代码校验的规则更准确地应用到代码真正的规范上面。...*/*.js 注意:使用项目中的eslint,命令为 npx prettier --write **/*.js eslint+prettier配合配置 eslint 是主要还是负责代码规则校验,prettier

    2.1K20

    SHELL(bash)脚本编程六:执行流程

    bash命令的执行分为四大步骤:输入、解析、扩展和执行。 本文将详述bash命令的一般处理过程: 如图所示 ? 输入 交互模式 在交互模式下,输入来自终端。...3、关键字 对于非重定向或赋值语句的第一个单词进行判定,如果是保留关键字,则根据语法定义判定该种命令类型的语法和结尾(结尾一般为某种控制操作符)。...5、其他 如果非重定向或赋值语句的第一个单词不是别名或复合命令的起始单词,解析器将标记它为命令名,并赋值给位置变量0,其余单词(控制操作符之前的)为此命令的参数($1、$2...$n)。...大括号扩展 首先进行的是大括号扩展,此扩展会导致单词数量的变化。...大括号扩展、单词分割和路径扩展不会发生。 执行 不同类型的命令,bash的执行方式有所差异。

    1.7K40

    JavaScript 函数的定义

    4.3 命名函数表达式 当然function命令后面也可带有函数名,下面是在定义时为函数命名的例子 ? (1)命名函数表达式的好处是当我们遇到错误时,堆栈跟踪会显示函数名,容易寻找错误。...这种写法的用处有两个,一是可以在函数体内部调用自身,二是方便除错(除错工具显示函数调用栈时,将显示函数名,而不再显示这里是一个匿名函数)。 (3)下面的形式声明函数也非常常见。 ?...需要注意的是,函数的表达式需要在语句的结尾加上分号,表示语句结束。而函数的声明在结尾的大括号后面不用加分号。 五、函数声明和函数表达式的区别 5.1 说明 (1)如果不声明函数名称,他肯定是表达式。...6.2 注意 (1)Function构造函数无法指定函数名称,它创建的是一个匿名函数。...但不推荐使用,因为这种语法会导致解析两次代码。第一次是解析常规javascript代码,第二次解析传入构造函数中的字符串,影响性能。 ?

    1.1K30

    tcl三部曲(三)、数组、流控制与函数

    正文开启,本次分享的是数组、流控制以及函数部分的笔记与操作实例 Part07Array数组 格式: ? 操作名为arrayName的数组,option选项决定了执行什么操作。...如果没有匹配的索引或者arrayName不是数组变量的名称,则返回空字符串。 ?...,否则Tcl解析器就会以后if在换行符处已经结束,下一行会被当做新的命令,从而导致解析器报错。...流控制之while 格式 while test body test是一个表达式,body是一个脚本,body是一个脚本,如果表达式非0,则运行脚本,知道表达式等于0才停止循环,此时while命令中断,返回一个空字符串...第二种 大括号指定type的缺省值为add,有缺省值的参数后面必须带有缺省值,缺省模式下的参数可以不传递 ? 第三种 参数可变型,输入参数个数可变 ?

    2.1K20
    领券