Когда я сегодня прочитал какое-то руководство, я пришел с такими утверждениями, как ${file?my.file.txt}
и ${file:?my.file.txt}
, что означает ${file?my.file.txt}
и ${file:?my.file.txt}
означают в скрипте Bash?
1 ответ
Из руководства - и всегда хорошо сначала это проверить:
${parameter:?word}
Если
parameter
равен нулю или не задан, расширениеword
(или сообщение на этот счет, еслиword
отсутствует) записывается со стандартной ошибкой, и оболочка, если она не является интерактивной, завершается. В противном случае значениеparameter
подставляется.
Таким образом, это защита от неустановленных переменных, где вы можете показать ошибку. Также,
Пропуск двоеточия приводит к проверке только для неустановленного параметра. Иными словами, если двоеточие включено, оператор проверяет наличие как параметра, так и того, что его значение не равно нулю; если двоеточие опущено, оператор проверяет только наличие.
Но, конечно, приведенные вами примеры несколько произвольны, и я удивляюсь, почему в учебнике они будут даже включены, не говоря уже о них, но не объяснят, что они делают.