在 Bash 中 ${file?my.file.txt} 和 ${file:?my.file.txt} 是什么意思?

在 Bash 中 ${file?my.file.txt} 和 ${file:?my.file.txt} 是什么意思?

${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将替换的值。

因此,这是防止变量未设置的一种保护措施,否则可能会显示错误。此外,

省略冒号会导致仅对未设置的参数进行测试。换句话说,如果包含冒号,则运算符会测试参数的存在性及其值是否不为空;如果省略冒号,则运算符仅测试存在性。

但是当然,您给出的例子有些武断,我想知道为什么本教程甚至会包括它们,更不用说包括它们但不解释它们的作用。

相关内容