Как передать определенную heredoc переменную в команду

Как передать определенную heredoc переменную в команду

Как передать эту переменную, определенную heredoc, в команду?

read -r -d '' tables <<'EOF'
table1
table2
table3
EOF

tables=$(tr '\n' ' ' < "$tables");

Я хочу, чтобы переменная таблицы была определена как:

table1 table2 table3

решение1

С помощью bash вы можете использоватьздесь-строка

tables=$(tr '\n' ' ' <<< "$tables")

С другими оболочками вы можете использоватьдругойздесь документ

tables=$(tr '\n' ' ' << END
$tables
END
)

решение2

Я обычно просто использую многострочную строку.

tables="
table1
table2
table3"

echo $tables
for table in $tables; do echo $table; done

Ваш heredocобрабатывается эквивалентно в моей системе

решение3

Как только у вас появится многострочная переменная, вы можете просто использовать echo:

echo "$tables" | tr '\n' ' '

Просто не забудьте использовать двойные кавычки.защищатьновые строки. Сравните:

$ echo $tables | tr '\n' '_'
table1 table2 table3_

с:

$ echo "$tables" | tr '\n' '_'
table1_table2_table3_

Связанный контент