加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

我应该在POSIX shell中使用“test”或“[”“]”吗?

发布时间:2020-12-15 21:55:19 所属栏目:安全 来源:网络整理
导读:我相信以下两个代码片段在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 首选哪种语法,为什么?在某些情况下,是否有
我相信以下两个代码片段在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兼容)测试的扩展部分,对最佳实践和陷阱有很多关注,并且没有优先选择的位置.

此外,the POSIX specification for test – 虽然它确实标记了很多功能obsolescent1 – 指定两种形式都不是另一种形式.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读