Как я могу передать эту переменную, определенную heredoc, команде?
read -r -d '' tables <<'EOF'
table1
table2
table3
EOF
tables=$(tr '\n' ' ' < "$tables");
Я хочу, чтобы переменная таблицы была определена как:
table1 table2 table3
Как я могу передать эту переменную, определенную heredoc, команде?
read -r -d '' tables <<'EOF'
table1
table2
table3
EOF
tables=$(tr '\n' ' ' < "$tables");
Я хочу, чтобы переменная таблицы была определена как:
table1 table2 table3
С bash вы можете использовать здесь-строку
tables=$(tr '\n' ' ' <<< "$tables")
С другими оболочками вы можете использовать другой здесь документ
tables=$(tr '\n' ' ' << END
$tables
END
)
Я обычно просто использую многострочную строку.
tables="
table1
table2
table3"
echo $tables
for table in $tables; do echo $table; done
Ваш heredoc
обрабатывается аналогично в моей системе
Если у вас есть многострочная переменная, вы можете просто использовать echo
:
echo "$tables" | tr '\n' ' '
Просто убедитесь, что используете двойные кавычки для защиты новых строк. Для сравнения:
$ echo $tables | tr '\n' '_'
table1 table2 table3_
с:
$ echo "$tables" | tr '\n' '_'
table1_table2_table3_