ILD

[ "$a" > "$b" ] 的坑
作者:Yuan Jianpeng 邮箱:yuanjp89@163.com
发布时间:2026-6-29 站点:Inside Linux Development

写一个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" > "" ]]



Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.