Использование Bash Я извлекаю несколько строк из двоичного файла. Эти строки являются именами файлов, поэтому только NUL и sla sh могут не отображаться. Я использую функцию, которая выводит эти имена файлов в массив. Я знаю, я могу использовать разделитель IFS newline, чтобы получить имена файлов с пробелами. Я надеюсь, что есть возможность разделить функции многострочными строками с помощью NUL для сохранения в массиве, поэтому можно использовать любое допустимое имя файла * nix. Если я установлю IFS на '' или '\ 0', я получу несколько номеров вместо имен. Не знаю почему, и, может быть, я наблюдал за чем-то довольно простым c :) Как мне добиться получения всех возможных строк имени файла, включая не только пробелы, но и новые строки и другие символы / байтовые значения?
Вот мой упрощенный пример.
#! /bin/bash
binaryFile=$1
getBinaryList () {
fileNameAddresses=( 123 456 789 ) #Just a mock example for simplicity
for currAddr in "${fileNameAddresses[@]}"
do
fileNameStart=$((currAddr)) #Just a mock example for simplicity
fileNameLength=48 #Just a mock example for simplicity
currFileName=$( dd status=none bs=1 skip=$fileNameStart count=$fileNameLength if=$binaryFile )
printf "%s\n" "$currFileName"
done
}
IFS=$'\n'
allFileNames=($(getBinaryList $binaryFile))
echo ${#allFileNames[@]}
printf "%s\n" "${allFileNames[@]}"