shell注意点(一)

整理最近shell的想法,以免想过之后又忘记。。.
首先还是讲讲引号。单引号强引用,双引号弱引用很好理解。不过这两个引号的使用还是很值得细究的。

双引号仅能够解释`(反单号),$(美元符号)和\(转义符号),应用也与这三者有关。
双引号与反单号使用较频繁,由于反单号用于提示shell需要处理一个命令,结果超过一个字符串,通常都需要用双引号阔住以避免歧义,比如应用在判断式中。
#!/bin/bash
#判断文件夹是否为空
[ -z "`ls -A $dir`" ]
#双引号与$,为了避免变量中有空格等,超过一个字符串产生歧义。
#!/bin/bash
#打印变量
nu="2 1"
if [ $nu = "2 1" ]; then
	echo $nu
fi
#如果按照上面代码运行,会报错too many arguments,所以通常不管怎样,推荐判断式符号两侧均加上双引号
#双引号与\,保留\的转义特性,应用相对简单,这个一般不会理解错。不过对于\应该注意单双引号的区别
#echo '\'' 	#‘’必须成对,于是程序等待用户输入另一个‘
#echo "\""	#打印"

单引号将所有特殊含义字符全部取消含义,虽然理解简单,但我刚开始总是搞错,主要是与awk等其他命令组合有关
awk '{print $1}' test.txt
awk "{print $1}" test.txt
这两者输出结果完全不同,前者正常后者异常。由于此处使用的$1是希望作为awk的内置变量的,需要将{print $1}原模原样的作为参数附给awk才能正常输出,而如果用""$1则会被程序的第一个变量值替换,此处为空,所以输出结果为test.txt的每一行。
其他的grep,sed什么的也一样,一般`和\使用不常见,而一旦碰到参数中有$就要多加注意了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值