shell 括号的特殊用法

Shell中的括号有其特殊的用法, 现总结如下:

1. 符号$后的括号

${a} 变量a的值, 在不引起歧义的情况下可以省略大括号.

$(cmd) 命令替换, 结果为shell命令cmd的输出, 和`cmd`效果相同, 不过某些Shell版本不支持$()形式的命令替换, 如tcsh.

$((exp)) 和`expr exp`效果相同, 计算数学表达式exp的数值, 其中exp只要符合C语言的运算规则即可, 甚至三目运算符和逻辑表达式都可以计算.

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-08-08 05:51:13

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

shell中括号的特殊用法

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

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 括号用法介绍

中括号[ 和 test 命令等价,用户布尔判断,比如: 1 a='abc' 2 if [ $a == 'abc' ] 3 then 4 echo "yes" 5 else 6 echo "no" 7 fi 等价于 1 if test $a == 'abc' 2 then 3 echo "yes" 4 else 5 echo "no" 6 fi 使用[]的时候要注意: 1. [] 左右括号要各留一个空格,否则会报错 2. 如果

Shell 括号辨识(转http://blog.csdn.net/taiyang1987912/article/details/39551385)

一.小括号,圆括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格. ②命令替换.等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令.有些shell不支持,如tcsh. ③用于初始化数组.如:array=(a b c d) 2.双小括号 (( ))

shell介绍及基本用法

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