Если у вас bash v4.4 или новее, вы можете использовать xargs
, чтобы проанализировать строки в кавычках и превратить их в строки, разделенные нулем, а затем readarray
, чтобы превратить это в массив bash:
readarray -t -d '' arr < <(xargs printf '%s\0' <file.txt)
Если у вас более старая версия bash, вам нужно будет создать массив поэлементно:
arr=( )
while IFS= read -r -d '' quote; do
arr+=( "$quote" )
done < <(xargs printf '%s\0' <file.txt)
Обратите внимание, что синтаксис xargs
quote немного отличается от всего остального(конечно).Он допускает как одинарные, так и двойные кавычки, но не допускает экранированные кавычки в этих строках.И это, вероятно, немного варьируется между версиями xargs
.