请教一个if语句的问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
fy20041127
帖子: 7
注册时间: 2009-01-12 21:36

请教一个if语句的问题

#1

帖子 fy20041127 » 2009-09-03 12:05

从网上看到
if [ condition ] 判断语句中要在condition与中括号之间加入空格

那请问if [[....]]这种双括号的形式要如何使用呢?我自己了尝试了几种方式也没发现有什么太大的区别,请高手指教
头像
cnkilior
论坛版主
帖子: 4984
注册时间: 2007-08-05 17:40

Re: 请教一个if语句的问题

#2

帖子 cnkilior » 2009-09-03 21:27

if [[....]]是bash的扩展,if [ condition ] 是posix规则。

具体忘记了。
头像
netstat
帖子: 104
注册时间: 2009-09-11 13:10
联系:

Re: 请教一个if语句的问题

#3

帖子 netstat » 2009-09-12 13:00

another choice
华科一小生
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 请教一个if语句的问题

#4

帖子 eexpress » 2009-09-12 14:42

代码: 全选

if ! [[ $1 =~ .mp3$ ]]; then exit 1; fi
if [[ $(tty) =~ /dev/tty.+ ]]; then
支持正则的啊,而且里面就不需要转义了。这很重要的。
● 鸣学
头像
c\nc
帖子: 231
注册时间: 2007-12-25 12:51

Re: 请教一个if语句的问题

#5

帖子 c\nc » 2009-09-12 16:33

代码: 全选

a="-h"
[[ $a = -* ]] && echo 嘿嘿
嘿嘿
支持通配符了
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: 请教一个if语句的问题

#6

帖子 tusooa » 2009-10-05 14:54

代码: 全选

05/10/2009 15:01:11                                                                                        
tusooa (~)                                                                                                 
>> type [
[ is a shell builtin
05/10/2009 15:01:35
tusooa (~)
>> type [[
[[ is a shell keyword
05/10/2009 15:01:37
tusooa (~)
>> [ h
bash: [: missing `]'
05/10/2009 15:01:42
tusooa (~)
>> [[ h
bash: unexpected token `newline', conditional binary operator expected
bash: syntax error near `h'
05/10/2009 15:01:44
tusooa (~)
>> [[ --help = -* ]]
05/10/2009 15:01:51
tusooa (~)
>> echo $?
0
05/10/2009 15:01:57
tusooa (~)
>> [ --help = -* ]
05/10/2009 15:02:02
tusooa (~)
>> echo $?
1

代码: 全选

] ls -ld //
回复