gpt4 book ai didi

linux - bash if 语句

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:53:12 25 4
gpt4 key购买 nike

我找到了这个 bash 脚本(有效)。这个脚本起着重要的作用。脚本的整体代码质量很好。我只是想知道以下构造是否有任何意义?

if [ "${G_FILE}" != "" ] && [ -f "${G_FILE}" ] && [ -r "${G_FILE}" ]; then
....

手册说:

[ -f FILE ] True if FILE exists and is a regular file.
[ -r FILE ] True if FILE exists and is readable.
[ STRING1 != STRING2 ] True if the strings are not equal.

我的想法:

  1. [ -n "${G_FILE}"][ "${G_FILE}"] 应该代替 [ "${G_FILE}"!= ""].
  2. 只有 [ -r "${G_FILE}"] 会做同样的事情。

我说得对吗?

最佳答案

首先,如果您需要严格的 POSIX 一致性,[ 仅比 [[ 更有意义。 -f-r 如果它们的选项参数被正确引用,则如果为空,测试应该始终为 false,因此第一个测试是无用的。 -r 将适用于例如命名管道、套接字等。-f 将内容限制为仅常规文件。

通常,您不需要检查文件是否真的可读。该检查可以与测试是否使用该文件的东西在大多数时间都成功的测试捆绑在一起。失败的重定向是错误的,最好以失败时返回适当状态的方式编写函数,而不是先测试可读文件。

关于linux - bash if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14029159/

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