【问题标题】:Bash shell option -rBash shell 选项 -r
【发布时间】:2022-01-22 14:28:42
【问题描述】:

我不是 shell 脚本方面的专家,当我阅读 bash 脚本中的一行时,我看到了:

if [[ ! -r test.json ]]
then
    printf "no test.json here\n" >&2
    exit 1
fi

if [[ ! -r test.json ]] 行选项有什么作用?从逻辑上看,它似乎检查文件test.json 是否不存在。我做了一些研究以查看 shell 命令中确实提供了所有选项,但我在这里看不到 -r 选项:https://tldp.org/LDP/abs/html/options.html

【问题讨论】:

  • 这不是 shell 选项,它是条件表达式的一部分。
  • 执行 man bash 并搜索段落 CONDITIONAL EXPRESSIONS,它显示了此文件测试运算符和许多其他有用的运算符。

标签: bash shell


【解决方案1】:

-r[-program 和 [[ bash 构造(您在此处使用的)的许多可能参数之一。

-r 检查它后面的参数是否是一个文件,它存在并且可读。

一个bash cheatsheet can be useful在制作shell脚本时处理这些事情

【讨论】:

  • 为了清楚起见,我应该补充一下:在这种情况下,“文件”不一定意味着“常规文件”;例如,它也可以是目录或符号链接。
【解决方案2】:

您正在查看文档的错误部分。这不是 shell 选项,而是 conditional expression 运算符。

-r 文件
如果 file 存在且可读,则为真。

! 运算符反转条件,因此这会告诉您 test.json 是否不存在或不可读。

【讨论】:

    猜你喜欢
    • 2019-10-11
    • 1970-01-01
    • 2012-10-24
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 2022-12-12
    • 2011-08-06
    相关资源
    最近更新 更多