${file?my.file.txt}
今天当我阅读一些教程时,我遇到了像和 这样的语句,那么和在 Bash 脚本中${file:?my.file.txt}
是什么意思呢?${file?my.file.txt}
${file:?my.file.txt}
答案1
来自手动的– 最好先检查一下:
${parameter:?word}
如果
parameter
为空或未设置,则将扩展word
(或如果不存在则显示该信息word
)写入标准错误,并且如果 shell 不是交互式的,则退出。否则,parameter
将替换的值。
因此,这是防止变量未设置的一种保护措施,否则可能会显示错误。此外,
省略冒号会导致仅对未设置的参数进行测试。换句话说,如果包含冒号,则运算符会测试参数的存在性及其值是否不为空;如果省略冒号,则运算符仅测试存在性。
但是当然,您给出的例子有些武断,我想知道为什么本教程甚至会包括它们,更不用说包括它们但不解释它们的作用。