linux中的(),(()),[],[[]],{}的作用
来源:互联网 发布:知乎app分析 编辑:程序博客网 时间:2024/05/06 21:11
linux中的(),(()),[],[[]],{}的作用:
ref: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1196028&page=1
()
命令组.在括号中的命令列表, 将会作为一个子shell来运行.
在括号中的变量,由于是在子shell中,所以对于脚本剩下的部分是不可用的. 父进程, 也就是脚本本身, 将不能够读取在子进程中创建的变量, 也就是在子shell中创建的变量.
(cmd1;cmd2;cmd3)
初始化数组.
Array=(element1 element2 element3)
$(...)
相当于`...`命令,返回括号中命令执行的结果
[[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么结果将为真
[[ $a == "z*" ]] # 如果$a与z*相等(就是字面意思完全一样), 那么结果为真.
[ $a == z* ] # 文件扩展匹配(file globbing)和单词分割有效.
[ "$a" == "z*" ] # 如果$a与z*相等(就是字面意思完全一样), 那么结果为真.
let命令
(( ))
(( ... ))结构可以用来计算并测试算术表达式的结果. 退出状态将会与[ ... ]结构完全相反!还可应用到c风格的for,while循环语句,(( )) 中,所有的变量(加不加$无所谓)都是数值。
$((...))结构的表达式是C风格的表达式,其返回的结果是表达式值,其中变量引用可不用‘$’(当然也可以)
for((...;...;...))
do
cmd
done
while ((...))
do
cmd
done
比较操作符
<
小于
(("$a" < "$b"))
<=
小于等于
(("$a" <= "$b"))
>
大于
(("$a" > "$b"))
>=
大于等于
(("$a" >= "$b"))
(( 0 ))
echo "Exit status of `(( 0 ))` is $?." # 1
(( 1 ))
echo "Exit status of `(( 1 ))` is $?." # 0
(( 5 > 4 )) # 真
echo "Exit status of `(( 5 > 4 ))` is $?." # 0
(( 5 > 9 )) # 假
echo "Exit status of `(( 5 > 9 ))` is $?." # 1
(( 5 - 5 )) # 0
echo "Exit status of `(( 5 - 5 ))` is $?." # 1
(( 5 / 4 )) # 除法也可以.
echo "Exit status of `(( 5 / 4 ))` is $?." # 0
(( 1 / 2 )) # 除法的计算结果 < 1.
echo "Exit status of `(( 1 / 2 ))` is $?." # 截取之后的结果为 0.
# 1
or ((a=1; a <= LIMIT ; a++)) # 双圆括号, 并且"LIMIT"变量前面没有"$".
do
echo -n "$a "
done
while (( a <= LIMIT )) # 双圆括号, 变量前边没有"$".
do
echo -n "$a "
((a += 1)) # let "a+=1"
done
a=2
b=$(($a*4)) #a=2 b=8
c=$((a*3)) #a=2 c=6
{xxx,yyy,zzz,...}
大括号扩展.
echo {1..20}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
cat {file1,file2,file3} > combined_file
# 把file1, file2, file3连接在一起, 并且重定向到combined_file中.
cp file22.{txt,backup}
# 拷贝"file22.txt"到"file22.backup"中
在大括号中, 不允许有空白, 除非这个空白被引用或转义.
echo {file1,file2}\ :{\ A," B",' C'}
file1 : A file1 : B file1 : C file2 : A file2 : B file2 : C
代码块
这个结构事实上创建了一个匿名函数(一个没有名字的函数). 然而, 与"标准"函数不同的是, 在其中声明的变量,对于脚本其他部分的代码来说还是可见的(除了用declare,typeset命令声明的变量)
()会开启一个新的子shell,{}不会开启一个新的子shell
(())常用于算术运算比较,[[]]常用于字符串的比较.
$()返回括号中命令执行的结果
$(())返回的结果是括号中表达式值
${ }参数替换与扩展
ref: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1196028&page=1
()
命令组.在括号中的命令列表, 将会作为一个子shell来运行.
在括号中的变量,由于是在子shell中,所以对于脚本剩下的部分是不可用的. 父进程, 也就是脚本本身, 将不能够读取在子进程中创建的变量, 也就是在子shell中创建的变量.
(cmd1;cmd2;cmd3)
初始化数组.
Array=(element1 element2 element3)
$(...)
相当于`...`命令,返回括号中命令执行的结果
[[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么结果将为真
[[ $a == "z*" ]] # 如果$a与z*相等(就是字面意思完全一样), 那么结果为真.
[ $a == z* ] # 文件扩展匹配(file globbing)和单词分割有效.
[ "$a" == "z*" ] # 如果$a与z*相等(就是字面意思完全一样), 那么结果为真.
let命令
(( ))
(( ... ))结构可以用来计算并测试算术表达式的结果. 退出状态将会与[ ... ]结构完全相反!还可应用到c风格的for,while循环语句,(( )) 中,所有的变量(加不加$无所谓)都是数值。
$((...))结构的表达式是C风格的表达式,其返回的结果是表达式值,其中变量引用可不用‘$’(当然也可以)
for((...;...;...))
do
cmd
done
while ((...))
do
cmd
done
比较操作符
<
小于
(("$a" < "$b"))
<=
小于等于
(("$a" <= "$b"))
>
大于
(("$a" > "$b"))
>=
大于等于
(("$a" >= "$b"))
(( 0 ))
echo "Exit status of `(( 0 ))` is $?." # 1
(( 1 ))
echo "Exit status of `(( 1 ))` is $?." # 0
(( 5 > 4 )) # 真
echo "Exit status of `(( 5 > 4 ))` is $?." # 0
(( 5 > 9 )) # 假
echo "Exit status of `(( 5 > 9 ))` is $?." # 1
(( 5 - 5 )) # 0
echo "Exit status of `(( 5 - 5 ))` is $?." # 1
(( 5 / 4 )) # 除法也可以.
echo "Exit status of `(( 5 / 4 ))` is $?." # 0
(( 1 / 2 )) # 除法的计算结果 < 1.
echo "Exit status of `(( 1 / 2 ))` is $?." # 截取之后的结果为 0.
# 1
or ((a=1; a <= LIMIT ; a++)) # 双圆括号, 并且"LIMIT"变量前面没有"$".
do
echo -n "$a "
done
while (( a <= LIMIT )) # 双圆括号, 变量前边没有"$".
do
echo -n "$a "
((a += 1)) # let "a+=1"
done
a=2
b=$(($a*4)) #a=2 b=8
c=$((a*3)) #a=2 c=6
{xxx,yyy,zzz,...}
大括号扩展.
echo {1..20}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
cat {file1,file2,file3} > combined_file
# 把file1, file2, file3连接在一起, 并且重定向到combined_file中.
cp file22.{txt,backup}
# 拷贝"file22.txt"到"file22.backup"中
在大括号中, 不允许有空白, 除非这个空白被引用或转义.
echo {file1,file2}\ :{\ A," B",' C'}
file1 : A file1 : B file1 : C file2 : A file2 : B file2 : C
代码块
这个结构事实上创建了一个匿名函数(一个没有名字的函数). 然而, 与"标准"函数不同的是, 在其中声明的变量,对于脚本其他部分的代码来说还是可见的(除了用declare,typeset命令声明的变量)
()会开启一个新的子shell,{}不会开启一个新的子shell
(())常用于算术运算比较,[[]]常用于字符串的比较.
$()返回括号中命令执行的结果
$(())返回的结果是括号中表达式值
${ }参数替换与扩展
0 0
- linux中的(),(()),[],[[]],{}的作用
- linux中的(),(()),[],[[]],{}的作用
- Linux中的(),(()),[],[[]],{}的作用
- linux中的(),(()),[],[[]],{}的作用
- Linux中的粘滞位的作用
- linux中的__setup的作用
- Linux内核中的BITS_TO_LONGS宏的作用
- Linux中的一些主要目录的作用
- linux 重定向中的 &> 和 >的作用
- Linux中的update和upgrade的作用
- linux内核中的EXPORT_SYMBOL的作用
- Linux中的一些主要目录的作用
- linux内核中的active_mm的作用
- linux内核中的likely()和unlikely()宏的作用
- Linux管道的作用--管道命令在脚本中的使用
- Linux中的根目录下的各目录作用
- linux中的top指令作用
- C++中的“:”的作用
- androidHTTP访问
- iOS代码实现两张图片合成一个
- 使用dup和dup2重定向和还原
- Nginx配置文件详细说明
- Hash表
- linux中的(),(()),[],[[]],{}的作用
- Libtorrent 之 NDK 编译
- 巧用c语言风格的多行注释/**/
- shiro实现不同浏览器本修改密码时其余浏览器需要重新登录
- 两个js 开发工具:bower grunt
- 【转载】史上最简单的Hibernate入门简介
- ANDROID内存优化(大汇总——上)
- 数字字符转化整数
- weblogic satrt server 时报 local host not known?