首页
学习
活动
专区
圈层
工具
发布

Dash与Bash的语法区别

本文系转载,原文URL为:http://www.igigo.net/archives/169 如今Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现...,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准,下面简要列举下从bash迁移到dash一般需要注意的问题 1.定义函数 bash: function在bash中为关键字...: 支持C语言格式的for循环 1 2 3 4 5 6 7 igi@gentoo ~ $ for((i=0;i<=3;i++));do echo "$i";done 0 1 2 3 igi@gentoo...~ $ echo $0 /bin/bash dash: 不支持该格式的for, 替代方法,用while+$((expression))实现 1 2 3 4 5 6 7 8 9 10 11 12 13...primary: "i++" $ echo $i;i=$((i+1)) 0 $ echo $i 1 $ echo $((i+=1)) 2 $ echo $i 2 $ echo $0 dash $ 以上列举的都是常见容易混淆的地方

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

    SHELL(bash)脚本编程二:语法

    本文开始正式介绍shell脚本的编写方法以及bash的语法。...除首行外,其余行中以符号#开头的单词及本行中此单词之后的字符将作为注释,被解析器所忽略。 语法 相比于其他更正式的语言,bash的语法较为简单。...大多数使用bash的人员,一般都先拥有其他语言的语法基础,在接触bash的语法之后,会自然的将原有语法习惯套用到bash中来。...事实上,bash的语法灵活多变,许多看起来像是固定格式的地方,实际上并不是。这让一些初学者觉得bash语法混乱不堪,复杂难记。...bash语法只包括六种:简单命令、管道命令、序列命令、复合命令、协进程命令(bash版本4.0及以上)和函数定义。

    2K20

    (19)Bash多命令顺序执行与管道符

    2才会执行;当命令1执行不正确,则命令2不会执行 || 命令1 || 命令2 逻辑或:当命令1执行不正确,则命令2才会执行 当命令1正确执行,则命令2不会执行 1."...这样的命令有什么意义吗?其实这个命令在某些情况下可以简化操作,同时在"dd"命令中有一些用处。...例1:dd命令演示,通过该命令可以知道复制这个文件的需要的时间 ? 2."&&"逻辑与 例1:第一条命令正确执行,则会执行第二条命令;第一条命令报错,第二条命令则不再执行 ? 这样做有什么意义吗?...二、管道符 命令格式: #命令1的正确输出作为命令2的操作对象 [root@192 lhh98330]# 命令1 | 命令2 例1: #无管道符 [root@192 lhh98330]# ls -l...#有管道符 [root@192 lhh98330]# ls -l /etc | more 执行结果:将ls -l /etc 的输出作为more的操作对象 ? END

    1.6K10

    Bug Bash:Bug大扫除的正确用法

    什么是Bug Bash? Bug Bash即Bug大扫除或者说Bug大扫荡,在产品发布之前,为了保证产品的质量,团队成员一起集中精力来找bug的活动。这里的bug指的是产品缺陷。...我们可以给Bug Bash设计的更具“游戏化”,让团队放松,增加团队更有凝聚力。 Bug Bash在什么场景下使用? Bug Bash在项目中不是必须的。...但越是复杂度高,周期长的项目,使用Bug Bash效果就越好。Bug Bash最适合的时间是在正式上线前,经过两轮测试或者达到预上线标准时,要保证核心功能都能跑通,产品比较稳定的情况下进行。...Bug Bash不能代替专业的QA,QA测试会更专业,更全面,Bug Bash只能作为QA的补充。 Bug Bash其实也可以用于需求文档、设计文档、测试文档等。...Bug Bash是一种思维,面对比较复杂,容易出问题的项目时,就可以在各个里程碑确认之前,做一次小型的Bug Bash。 Bug Bash是一种思维方式,如果项目特别复杂,一次做不完。

    1.2K10

    Jenkins声明式管道语法快速参考指南

    声明式管道语法提供了一个简单的预定义层次结构,以使所有经验级别的用户都可以访问管道和相关的Jenkinsfiles的创建。...label '' } stages { stage('Build') { steps{ sh 'mvn install' } } } } 此外,声明式管道语法还提供以简单的格式控制管道执行环境的各个方面的能力...surefire-reports/*.xml’ } } } post { always { deleteDir() } } } 声明式管道语法...agent, environment,tools and post ---- 声明式管道语法(可选) environment: 定义管道运行时环境变量。 options: 定义管道运行时选项。...triggers: 管道的调度,构建触发器。 parameters:定义管道的运行时参数。 post:定义当管道运行后的操作。 always:总是执行。

    2.8K20

    C#语法——await与async的正确打开方式

    C#5.0推出了新语法,await与async,但相信大家还是很少使用它们。...我觉得大家的await与async的打开方式不正确。  正确的打开方式 首先看下使用约束。 1、await 只能在标记了async的函数内使用。 2、await 等待的函数必须标记async。...这句话是干什么用的呢?是用来获取线程返回值的。 这个逻辑是这样的,如果想要获取线程返回结果,就自然要等待线程结束。 运行一下,我们将看下面的结果。...结语 await是一种很便捷的语法,他的确会让代码简洁一些,但他主动优化线程的功能,如果不了解就使用,可能会导致一些奇怪的BUG发生。...C#语法——委托,架构的血液 C#语法——元组类型 C#语法——泛型的多种应用 -------------------------------------------------------------

    1.6K30

    关于go的只读管道只写管道以及单向管道的理解

    ,只能写数据到管道里面 func writeChan(ch chan<- int) { ch <- 1 } //单向只读管道,只能从管道里面读出数据 func readChan(ch <-chan...{ value := <-ch fmt.Println(value) } 上面的例子,writeChan只能对ch变量进行写操作,readChan只能对ch变量进行读操作,这样造成很多同学对管道理解就有了只读和只写管道了...,其实管道都是双向的,默认双向可读写,只是管道在函数参数传递时可以使用操作符限制管道的读写,就如上面的例子。...关于上面单向管道的例子,单向管道只能用于发送或者接受数据,但是go的管道其实是没有单向管道,所谓的单向管道只是对管道的一种使用限制,这个和c语言const修饰函数参数为只读是一个道理。...总结: go语言是没有只读管道,只写管道,单向管道。 所谓的只读管道,只写管道,单向管道只是对go的管道一种限制使用。

    1.4K10

    linux常用命令、bash语法学习笔记,持续记录

    2. “| ”管道符用法 上一条命令的输出,作为下一条命令参数 方式:command1 | command2 Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入...连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推 利用一个管道# rpm -qa|grep licq 这条命令使用一个管道符“|”建立了一个管道...只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才会被执行。这和 c 语言中的逻辑或语法功能相同,即实现短路逻辑或操作。.../root/.bash_profile文件。...source ~/.bash_profile 常见问题 1.bash不显示路径 vim ~/.bash_profile #添加如下文本 export PS1='[\u@\h \W]\$' source

    2.6K30

    java写一个算法,分析shell语法是否正确

    java写一个算法,分析shell语法是否正确 以下是一个示例代码,用于分析shell语法是否正确,而不实际执行脚本。...该方法接受一个shell语法字符串作为参数,并返回一个布尔值,表示语法是否正确。 在 analyzeShellSyntax 方法中,我们定义了一组关键字,代表合法的shell命令。...然后,我们将输入的shell语法拆分为命令和参数,检查命令是否是合法的关键字。如果命令不合法,直接返回false。如果有参数,则检查参数是否以合法字符开头。...在主方法中,我们从标准输入读取shell语法,并调用 analyzeShellSyntax 方法进行分析。然后根据返回结果输出相应的信息。分析最基本的shell语法是否正确。...实际上,分析shell语法的过程要更复杂,包括处理命令的参数、管道、重定向等等。

    19710

    《Understanding *nix Bash Profile》详细解释了Bash的配置。

    作为一个ThoughtWorker,不熟悉命令行几乎是一件被人嘲笑的事,而Bash又几乎是每个人的入门shell。 但你对Bash了解多少呢?你知道究竟应该配置Bash才能使其正确地运作。...西安办公室的王磊用一篇《Understanding *nix Bash Profile》详细解释了Bash的配置。...譬如,使用X Window登录后,如果启动终端(Terminal),则不需要登录即可进入shell 或者,如果在当前的bash环境中再输入命令bash,同样也没有提供用户名和密码便进入新的shell环境...当使用Login shell进入bash时,bash首先会读取/etc/profile,然后会依次读取下面的文件中的任意一个(注意是任意一个,也就是说bash会依次查找下面三个配置文件,且找到一个后,后续的文件便不再读取...使用bash 在当前的bash环境下,输入bash, 则获取的为Non-login shell, ~/.bashrc会被执行 但如果执行bash -l, 则获取的shell为Login shell,并会执行

    1.1K70

    Shell中的管道

    管道 管道,从一头进去,从另一头出来。 在Shell中,管道将一个程序的标准输出作为另一个程序的标准输入,就像用一根管子将一个程序的输出连接到另一个程序的输入一样。...管道的符号是|,下面的程序将cat的标准输出作为less的标准输入,以实现翻页的功能: $ cat source.list.bk | less tee 有时候我们想要同时将程序的输出显示在屏幕上(或进入管道...tee程序的输出和它的输入一样,但是会将输入内容额外的保存到文件中: $ cat hello.txt | tee hello.txt.bk 上面的例子中,tee程序将cat程序的输出显示在屏幕上,并且在...需要注意的是,如果tee命令中指定的文件已经存在,那么它将会被覆盖,使用-a选项在文件末尾追加内容(而不是覆盖): $ cat hello.txt | tee -a hello.txt.bk 条件执行

    1.7K20

    Linux的管道命令

    Linux的管道命令 管道命令(Pipe) 管道命令用"|"来表示,管道命令需要接收前一个命令的输出来进行操作,但不能处理前一个命令的错误....//选取界面:cut,grep cut -d '分隔字符' -f fields cut -c 字符范围 //用于排列整齐的信息 cut -d ':' -f 3,5 //以:作为分隔 列出第3列和第...5列的数据 //刚才的cut是做切割,而grep是做分析 grep -a:将文件以text文件方式查找数据; -c:计算找到'查找字符串'的次数 -v:反向输出 -n:输出的时候带行号 //排序命令...:sort,wc,uniq sort -f:忽略大小写 -b:忽略空格 -r:反向输出 -M:以月份名字排序 -u:相同的数据只显示一行 //uniq -i:忽略代销写字符的不同 -c:进行计数 /...last | tr -d ':' //删除冒号 col: -x:将tab转换成对等的空格键 -b:在文字内有反斜杠(/),保留反斜杠最后接的字符

    3.6K40
    领券