2

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

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

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

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

table1 table2 table3

3 ответа3

2

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

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

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

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

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

tables="
table1
table2
table3"

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

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

0

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

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

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

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

с:

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

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