Вставка строки с несколькими строками в переменные CMD или Bash

Вопрос или проблема

Я хочу скопировать несколько строк (разделенных клавишей Enter) из, например, блокнота и затем вставить их в новую переменную в CMD или консоль Bash и после этого выполнить с ними некоторые операции.

Хотя это довольно легко в PowerShell (я просто ввожу

variable_name=”

затем вставляю скопированные строки и просто добавляю

в конце), в предшественниках это гораздо сложнее, так как CMD интерпретирует каждое нажатие Enter как “выполнить”. Есть ли какой-то другой способ это сделать, кроме как сохранение во внешний текстовый файл?

После каждой строки добавляйте \, чтобы указать на несколько строк. Ответ дан на Stack Overflow (хотя он, вероятно, туда даже не относится.)

Попробуйте команду readarray (или её псевдоним mapfile) в сочетании с here-document:

readarray -t my_array <<EOF
line 1
line 2
line 3
EOF

# Вывести элементы массива
echo "${my_array[@]}"

Объяснение:

  • readarray -t my_array: Эта команда считывает входные данные и сохраняет каждую строку как элемент в массиве my_array. Опция -t удаляет завершающий перевод строки из каждой строки.
  • <<EOF: Начало here-document. Это указывает, что последующие строки будут входными для readarray. Here-document продолжается до следующего появления EOF.
  • EOF: Обозначает конец here-document.
  • echo "${my_array[@]}": Выводит массив.

Ответ или решение

Вопрос о том, как вставить строку, состоящую из нескольких строк, в переменные CMD или Bash, является актуальным для многих специалистов по информационным технологиям. В то время как PowerShell предоставляет интуитивно понятный способ работы с такими данными, CMD и Bash требуют более детального подхода.

Теория

В командной строке Windows (CMD) каждая новая строка воспринимается как новая команда, что усложняет вставку многострочных значений напрямую. В Bash, напротив, есть возможность использовать "here-документы" и массивы, чтобы обойти такую проблему.

Примеры

1. CMD:

Если у вас есть необходимость работать с многострочными данными в CMD, то одним из решений может быть использование командного файла или построчной обработки данных. Но прямого и простого способа, как в PowerShell, в CMD, к сожалению, нет. Можете рассмотреть вариант использования двойных кавычек и ^ (символ продолжения строки), чтобы объединить строки, но это может не сработать для больших объемов текста.

2. Bash:

Для Bash, как упомянуто, можно использовать команду readarray:

readarray -t my_array <<EOF
строка 1
строка 2
строка 3
EOF

# Вывод элементов массива
echo "${my_array[@]}"
  • readarray -t my_array: Загружает каждую строку ввода в массив my_array. Опция -t удаляет завершающую новую строку.
  • <<EOF ... EOF: Здесь-документ, который позволяет вставить многострочный текст.

Применение

Для профессионалов, работающих с различными скриптами, понимание таких приемов является важным аспектом повседневной работы. В Bash все проще и гибче, чем в CMD, поэтому если ваша рабочая среда позволяет, переход на Bash может существенно оптимизировать обработку текстовых данных. Также PowerShell предлагает удобство в том, что можно использовать простые инструменты для обработки многострочных строк без необходимости обходных маневров, применяемых в CMD.

Таким образом, выбор инструмента осуществляется на основе ваших требований и возможностей окружения, в котором вы работаете.

Оцените материал
Добавить комментарий

Капча загружается...