Когда я сегодня прочитал какое-то руководство, я пришел с такими утверждениями, как ${file?my.file.txt} и ${file:?my.file.txt} , что означает ${file?my.file.txt} и ${file:?my.file.txt} означают в скрипте Bash?

1 ответ1

3

Из руководства - и всегда хорошо сначала это проверить:

${parameter:?word}

Если parameter равен нулю или не задан, расширение word (или сообщение на этот счет, если word отсутствует) записывается со стандартной ошибкой, и оболочка, если она не является интерактивной, завершается. В противном случае значение parameter подставляется.

Таким образом, это защита от неустановленных переменных, где вы можете показать ошибку. Также,

Пропуск двоеточия приводит к проверке только для неустановленного параметра. Иными словами, если двоеточие включено, оператор проверяет наличие как параметра, так и того, что его значение не равно нулю; если двоеточие опущено, оператор проверяет только наличие.

Но, конечно, приведенные вами примеры несколько произвольны, и я удивляюсь, почему в учебнике они будут даже включены, не говоря уже о них, но не объяснят, что они делают.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .