linux中的(),(()),[],[[]],{}的作用

linux中的(),(()),[],[[]],{}的作用:
ref: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1196028&page=1

()

命令组.在括号中的命令列表, 将会作为一个子shell来运行.
在括号中的变量,由于是在子shell中,所以对于脚本剩下的部分是不可用的. 父进程, 也就是脚本本身, 将不能够读取在子进程中创建的变量, 也就是在子shell中创建的变量.
(cmd1;cmd2;cmd3)

初始化数组.
Array=(element1 element2 element3)

$(…)

相当于...命令,返回括号中命令执行的结果

[[ KaTeX parse error: Expected 'EOF', got '#' at position 15: a == z* ]] #̲ 如果a以"z"开头(模式匹配)那么结果将为真
[[ KaTeX parse error: Expected 'EOF', got '#' at position 15: a == "z*" ]] #̲ 如果a与z*相等(就是字面意思完全一样), 那么结果为真.

[ KaTeX parse error: Expected 'EOF', got '#' at position 16: a == z* ] #̲ 文件扩展匹配(file gl…a" == “z*” ] # 如果$a与z*相等(就是字面意思完全一样), 那么结果为真.

let命令

(( ))

(( … ))结构可以用来计算并测试算术表达式的结果. 退出状态将会与[ … ]结构完全相反!还可应用到c风格的for,while循环语句,(( )) 中,所有的变量(加不加$无所谓)都是数值。

( ( . . . ) ) 结 构 的 表 达 式 是 C 风 格 的 表 达 式 , 其 返 回 的 结 果 是 表 达 式 值 , 其 中 变 量 引 用 可 不 用 ‘ ((...))结构的表达式是C风格的表达式,其返回的结果是表达式值,其中变量引用可不用‘ ((...))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 KaTeX parse error: Expected 'EOF', got '#' at position 9: ?." #̲ 截取之后的结果为 0. …".
do
echo -n "$a "
done

while (( a <= LIMIT )) # 双圆括号, 变量前边没有" " . d o e c h o − n " ". do echo -n " ".doechon"a "
((a += 1)) # let “a+=1”
done

a=2
b= ( ( (( ((a4)) #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

(())常用于算术运算比较,[[]]常用于字符串的比较.

$()返回括号中命令执行的结果

$(())返回的结果是括号中表达式值

猜你喜欢

转载自blog.csdn.net/qq_30566629/article/details/109344564