linux中shell的小括号、大括号的用法区别
Linux中小括号()和大括号{}都是对其中的一串命令进行执行,但有一定的区别,其区别如下:
操作方法
- 01
小括号() ①命令组。括号中的命令新开一个子shell程序,括号中的变量为本地变量 ,不能够在脚本其他部分使用。括号中多个命令之间用分号隔开。 ②命令替换。命令替换$(cmd)等同于`cmd`(这不是单引号,`是ESC下面的那个键) ,shell执行过程中发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其输出,再将此输出放到原来命令。例如: [root@localhost tmp]# ls fstab functions hellobash issue mytestdir scripts [root@localhost tmp]# echo $(ls) fstab functions hellobash issue mytestdir scripts [root@localhost tmp]# echo `ls` fstab functions hellobash issue mytestdir scripts [root@localhost tmp]# ③用于初始化数组。如:arr=(m n)
- 02
2、大括号 ①拓展。对大括号中的文件名做扩展。在大括号中,不允许有空白,除非这个空白被引用或转义。拓展分为普通以逗号(,)进行拓展,如echo {a,b}.txt将间隔的各项内容均列出;已两个点(..)进行拓展,如echo {1..5}.txt自动补全1到5中间内容。 [root@localhost ~]# echo {a,b}.txt a.txt b.txt [root@localhost ~]# echo {1..5}.txt 1.txt 2.txt 3.txt 4.txt 5.txt [root@localhost ~]# ②内部组 。与小括号中的命令不同,大括号内的命令在当前shell运行,不会重新开子shell。括号内的命令间用分号隔开,最后一个命令后必须跟分号。{}的第一个命令和左括号之间必须要有一个空格。