Объявление массива :Двойные кавычки и скобки

Добавление к ответу Стефана Шазела,

вам, возможно, придется использовать кавычки, особенно если какое-либо имя файла содержит пробелы, поэтому old_file_nameстановится 'old_file_name'. Обычно это происходит при работе со многими файлами, используйте '{}'вместо {}. На данный момент я не могу сказать, уместно ли цитирование похвал при использовании опции -execdir.

Кроме того, проверьте справочную страницу find , так как она содержит предупреждение о безопасности, которое, по-видимому, применимо в данном случае.

0
06.10.2021, 21:45
1 ответ

Строка подстрок, разделенных новой строкой -, — это не то же самое, что массив строк. Один представляет собой строку; другой содержит строки.

Тот факт, что ваша строка разделена на строки включением символов новой строки в строку, не имеет особого значения для хранения строки. Оболочка не может индексировать его по строкам, и одна строка не может содержать встроенный символ новой строки без его какого-либо кодирования.

Массив представляет собой упорядоченный набор отдельных строк. Каждая строка сразу доступна через индекс в массиве. Один элемент массива может содержать любую стандартную строку с переводом строки или другими символами-разделителями или без них (, за исключением символа nul в оболочке bash). Однако элемент массива не может быть другим массивом, так как bashне поддерживает многомерные -массивы.

string1='Hello World'

string2="'Twas brillig, and the slithy toves
      Did gyre and gimble in the wabe:
All mimsy were the borogoves,
      And the mome raths outgrabe."

array=( "$string1" "$string2" )

printf '%s\n' "${array[1]}"

Приведенный выше фрагмент сценария печатает первый куплет из поэмы Льюиса Кэрролла «Бармаглот». Он не печатает Hello World, так как мы решили вывести второй элемент массива, а не первый. Второй элемент представляет собой одну строку, состоящую из символов. Некоторые из этих символов являются символами новой строки и пробелами, но это делается только для презентационных целей.

Чтобы вывести только одну строку или любую другую подстроку из стихотворения во втором элементе массива, нам нужно использовать некоторую утилиту для разбора строки. Извлечение из строки отдельных подстрок, разделенных новой строкой -, не имеет ничего общего с концепцией массивов в оболочке.

2
07.10.2021, 06:59

Теги

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