写一个test.sh
#!/bin/bash [ "abc" > "" ]
执行:
$ ./test.sh
./test.sh: line 3: : No such file or directory
strace发现,它竟然会尝试打开空文件。
read(255, "#!/bin/bash\n\n[ \"abc\" > \"\" ]\n", 28) = 28
openat(AT_FDCWD, "", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 ENOENT (No such file or directory)
原来[ 是一个命令
$ which [
/usr/bin/[
[ "abc" > "" ]
等价于重定向到 > ""
man [
显示的test命令的帮助。
为了使用>,需要转义。
[ "abc" \> "" ]
另外[[ ]] 是bash的一个关键字,不需要转义
[[ "abc" > "" ]]