set -u находит неустановленное значение в heredoc в скрипте bash

Por ejemplo, si usaGNU grep:

$ echo "Icecream123 AirplaneBCD CompanyTL1 ComputerYU1" | grep -oP '\bIcecream.*?(\s|$)' --color

Utiliza PCRE.

1
08.07.2019, 21:14
1 ответ

Heredoc — это гигантская строка, но если завершающая строка(SCRIPTв вашем<< SCRIPT)не заключена в кавычки, она действует как строка в двойных -кавычках , поэтому любые переменные раскрываются. Если какая-либо часть терминатора указана в перенаправлении (, например. << "SCRIPT"), то он действует как одиночная -строка в кавычках , поэтому никакие переменные не расширяются.

Рассмотрим этот скрипт:

$ cat heredoc.sh 
#!/bin/bash
var=xyz
cat <<EOF
var=$var
EOF

cat <<'EOF'
var=$var
EOF

$./heredoc.sh 
var=xyz
var=$var

Первое EOFне цитируется, поэтому $varрасширяется. Во-вторых, строка, идущая к cat, содержит литерал $var.

1
27.01.2020, 23:41

Теги

Похожие вопросы