分页: 1 / 1

---大家讨论一下这两种写法的区别

发表于 : 2013-08-05 15:18
bzhao
#!/bin/sh

if [[ 3 -gt 2 ]];then
echo aaaaa
fi

if [ 3 -gt 2 ];then
echo aaaaa
fi

Re: ---大家讨论一下这两种写法的区别

发表于 : 2013-08-05 21:29
lxf1992521
[[ 是bash的新版本特性,比 [ 功能更强大,且兼容 [ 。

比如测试两个命令表达式:

代码: 全选

[ -d /dev && -f /etc/fstab ] && echo hello
# bash: [: 缺少 `]'

[[ -d /dev && -f /etc/fstab ]] && echo hello
# hello
还有很多其他的特性,欢迎查阅《高级Bash脚本编程指南》和bash的man文档! :em11

Re: ---大家讨论一下这两种写法的区别

发表于 : 2013-08-07 12:26
bzhao
lxf1992521 写了:[[ 是bash的新版本特性,比 [ 功能更强大,且兼容 [ 。

比如测试两个命令表达式:

代码: 全选

[ -d /dev && -f /etc/fstab ] && echo hello
# bash: [: 缺少 `]'

[[ -d /dev && -f /etc/fstab ]] && echo hello
# hello
还有很多其他的特性,欢迎查阅《高级Bash脚本编程指南》和bash的man文档! :em11

[ -d /dev && -f /etc/fstab ] && echo hello 应该改成:

[ -d /dev -a -f /etc/fstab ] && echo hello

谢谢你让我了解有这个差异(-a, &&)

Re: ---大家讨论一下这两种写法的区别

发表于 : 2013-08-08 11:54
lilydjwg
[[ 是 bash / zsh 的关键字,[ 是一个命令。[[ 里不用关心 globbing 和字符串扩展的问题,比如 [[ -n $a ]] 以及 [[ $t == *test* ]]。