gpt4 book ai didi

shell - 我应该在 POSIX shell 中使用 "test"还是 "[" "]"?

转载 作者:行者123 更新时间:2023-12-04 18:03:19 24 4
gpt4 key购买 nike

我相信以下两个代码片段在符合 POSIX 的 shell 中都是有效的:

选项1:

if [ "$var" = "dude" ]
then
echo "Dude, your var equals dude."
fi

选项 2:
if test "$var" = "dude"
then
echo "Dude, your var equals dude."
fi

首选哪种语法,为什么?在某些情况下是否有理由使用一个而不是另一个?

最佳答案

没有功能差异,这使其成为一种纯粹的风格选择,没有广泛接受的指导方针。 The bash-hackers wiki有一个关于经典(POSIX 兼容)的扩展部分 test ,非常关注最佳实践和陷阱,并且不采取任何立场。

此外,the POSIX specification for test -- 虽然它确实标志着大量功能已过时1 -- 没有指定任何一种形式优先于另一种形式。

也就是说,对 test 的一个优势是它不太利于人们从其他语言中引入期望,从而导致代码损坏或错误。例如,写 [$foo=1] 是一个常见的错误。而不是正确的 [ "$foo" = 1 ] ,但人们并没有广泛看到写 test$foo=1 : 视觉上更明显的是test "$foo" = 1遵循与其他 shell 命令相同的解析规则,因此需要同样注意引用和空格。

[1] 如-a , -o , () ,以及具有四个以上参数的任何用法(不包括以名称 ] 开始的实例上的尾随 [ )。

关于shell - 我应该在 POSIX shell 中使用 "test"还是 "[" "]"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38001248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com