对shell中各种引号的使用区分的不是太清楚,今天再次总结下来,一方面加深印象,另一方面以后用到时也可以回来看~
1、双引号 使用双引号可引用除字符$、`、/外的任意字符和字符串。
举例:
grep tao tao /home/taotaotheripper
运行结果:
grep: tao: 没有哪个文件或目录
grep "tao tao /home/taotaotheripper" 就可以正常运行了
var=taotaotheripper
echo "$var"
运行结果:taotaotheripper
说明双引号不能引用$字符
2、单引号
与双引号类似,但是可以引用任何字符。
举例:
var=taotaotheripper
echo '$var'
运行结果:$var
3、反引号
反引号用于设置系统命令的输出到变量。
举例:
echo `date`
运行结果:
2010年 07月 25日 星期日 20:15:37 CST
说明date先执行后执行结果被echo输出
var=`date`
echo $var
运行结果与上面相同
4、反斜线
屏蔽字符的特殊含义。
举例:
var=taotaotheripper
echo "/$var"
输出结果:$var
$字符已经被/转义
5、大括号和小括号
1)${var}和$(var)
a)${var}
这种用法中,加上大括号与不加没有区别,唯一不同是当不加大括号会出现歧义时应加上大括号。
举例:
var=taotaotheripper
echo $vardandan
运行结果:
此时shell把vardandan看作一个变量,若第二行改为
echo ${var}dandan
运行结果:taotaotheripperdandan
b)$(var)
命令替换,与``作用相同,执行指令,并把指令的标准输出放到$(var)的位置。
2)一串命令执行和()和{}
()和{}都是对一串的命令进行执行,但有所区别:
A、()只是对一串命令重新开一个子shell进行执行
B、{}对一串命令在当前shell执行
C、()和{}都是把一串的命令放在括号里面,并且命令之间用;号隔开
D、()最后一个命令可以不用分号
E、{}最后一个命令要用分号
F、{}的第一个命令和左括号之间必须要有一个空格
G、()里的各命令不必和括号有空格
H、()和{}中括号里面的某个命令的重定向只影响该命令,但括号外的重定向则影响到括号里的所有命令
举例:
var=taotao
(var=dandan)
echo $var
运行结果:
taotao
子shell中的var发生了改变,但是原shell中并没有发生改变
var=taotao
{ var=dandan; }
echo $dandan
运行结果:
dandan
因为{}是在当前shell运行,所以原shell中的变量发生了变化
{ var1=taotao;var2=dandan;echo $var1>a;echo $var2;}
cat a
输出结果:
taotao
只有一个指令被重定向
{ var1=test1;var2=test2;echo $var1;echo $var2; }>a
cat a
运行结果:
taotao dandan
6、中括号
1)可用作数值计算。
举例:
echo $[ 1 * 2 ]
运行结果:
2
2)可用作各种条件测试
举例:
[ 3 -eq 3 ]
echo $?
运行结果:
0
说明3与3相等
关于中括号在条件测试中的用法有文件状态测试、字符串测试和数值测试,在此不展开了,呵呵。