shell中括号的特殊用法

shell中括号的特殊用法

Shell中的括号有其特殊的用法, 现总结如下:
1. 符号$后的括号
${a} 变量a的值, 在不引起歧义的情况下可以省略大括号.
$(cmd) 命令替换, 结果为shell命令cmd的输出, 和`cmd`效果相同, 不过某些Shell版本不支持$()形式的命令替换, 如tcsh.
$((exp)) 和`expr exp`效果相同, 计算数学表达式exp的数值, 其中exp只要符合C语言的运算规则即可, 甚至三目运算符和逻辑表达式都可以计算.

a=1;b=2echo $[ a + b ]  的值会是3,效果同`expr exp`和$((exp)),其中$[ a + b ]中括号和变量间的空格可以不要,即$[a+b]


2. 多条命令执行

(cmd1;cmd2;cmd3) 新开一个子shell顺序执行命令cmd1,cmd2,cmd3, 各命令之间用分号隔开, 最后一个命令后可以没有分号.
{ cmd1;cmd2;cmd3;} 在当前shell顺序执行命令cmd1,cmd2,cmd3, 各命令之间用分号隔开, 最后一个命令后必须有分号, 第一条命令和左括号之间必须用空格隔开.
对{}和()而言, 括号中的重定向符只影响该条命令, 而括号外的重定向符影响到括号中的所有命令.


3. 双括号的特殊用法

(()) 增强括号的用法, 常用于算术运算比较. 双括号中的变量可以不使用$符号前缀, 只要括号中的表达式符合C语言运算规则, 支持多个表达式用逗号分开.
比如可以直接使用for((i=0;i<5;i++)), 如果不使用双括号, 则为for i in `seq 0 4`或者for i in {0..4}.
再如可以直接使用if (($i<5)), 如果不使用双括号, 则为if [ $i -lt 5 ].
[[]] 增强方括号用法, 常用于字符串的比较. 主要用于条件测试, 双括号中的表达式可以使用&&, ||, <, >等C语言语法.
比如可以直接使用if [[ $a != 1 && $a != 2 ]], 如果不适用双括号, 则为if [ $a -ne 1] && [ $a != 2 ]或者if [ $a -ne 1 -a $a != 2 ].

时间: 2024-12-14 09:21:22

shell中括号的特殊用法的相关文章

【shell】Linux shell中括号的用法

Linux shell中括号的用法 概述 本文主要介绍Linux中括号的用法,主要包含判断文件和变量. **注意事项**:中括号两边必须有空格. 使用中括号会涉及到的知识 &&.|| 在本文对文件或者变量做判断的时候,可能会多次使用到&&和||这两个符号,所以在我们进入中括号的学习之前首先了解一下这两个符号的作用. &&:并 --> 两真才为真,如果有两个条件,第一个为真,那么肯定会判断第二个条件:如果第一个条件为假,那么第二个条件将不会判断.(第一个

SHELL STUDY....tr的用法

一般我们使用tr来做字符串的替换,或者删除指定的字符串 tr的语法如下: tr [OPTION]... SET1 [SET2] -c, -C, --complement first complement SET1 将非SET1中的字符替换为SET2 [[email protected] ~]$ echo "lubinsu" | tr -c "l" "A" lAAAAAAA -d, --delete delete characters in SET

shell变量的特殊用法

转载:http://blog.csdn.net/shmilyringpull/article/details/7631106 假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt 可以用${ }分别替换得到不同的值:${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt${file##*/}:删掉最后一个 /  及其左边的字符串:my.file.txt${file#*.}:删掉第一个 .  及其左边的字符

shell expect的简单用法【转】

用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下:  ##############################################  #!/usr/bin/expect  set timeout 30  spawn ssh -l username 192.168.1.1  expect "password:"  send "ispa

&nbsp; shell中的select用法

select也是循环的一种,它比较适合用在用户选择的情况下.比如,我们有一个这样的需求,运行脚本后,让用户去选择数字,选择1,会运行w命令,选择2运行top命令,选择3运行free命令,选择4退出.脚本这样实现: #!/bin/bash echo "Please chose a number, 1: run w, 2: run top, 3: run free, 4: quit" echo select command in w top free quit do case $comma

(转)Shell中read的用法详解

Shell中read的用法详解 原文:http://blog.csdn.net/jerry_1126/article/details/77406500 read的常用用法如下: read -[pstnd] var1 var2 ... -p 提示语句-n 字符个数-s 屏蔽回显-t 等待时间-d 输入分界 [plain] view plain copy 01). read                           # 从标准输入读取一行并赋值给特定变量REPLY [email prote

Shell里面括号的用法

中括号 中括号分为单中括号[],和双中括号[[]],中括号一般用于表达式判断中,小括号也可以用于表达式,这个后面提到. 单中括号[] A=5 B=3 [ $A -eq $B ]    判断A是否等于B [ ${A} -eq ${B} ]  作用同上 [ "${A}" -eq "${B}" ]  作用同上 A=ABC [ $A == "ABC" ]   或写成  [ ${A} == "ABC" ]   或写成  [ "

shell介绍及基本用法

8.1:shell介绍: shell是一个命令解释器,提供用户和机器之间的交互,支持特定语法,支持逻辑判断.循环,并且每个用户都可以有自己的shell: Centos默认的shell是bash(Bourne Agin Shell):其实为了纪念sh的创造者bourne这个用户: 常见的还有zsh(power - shell)    ksh(korn - shell)这两种:支持的特性比较少: 8.2:命令历史:history 在系统中用户使用的命令都会保存下来,会保存在当前用户的家目录下: hi

shell 中seq的用法 echo -n用法

用法:seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 增量 尾数 从1循环到100的两种方法(bash 其它的shell没试过)for x in `seq 1 100`;do echo $x;donefor x in {1..100};do echo $x;done echo -n 不换行输出 $echo -n "123" $echo "456" 最终输出 123456 echo -e 处理特殊字符 若字符串中