Я уже прочитал много вопросов, касающихся чтения и записи в ARRAY на bash. Я не смог найти решение своей проблемы.
На самом деле, у меня есть файл, который содержит путь к множеству файлов.
cat MyFile
> ~/toto/file1.txt
> ~/toto/file2.txt
> ~/toto/file3.txt
> ~/toto/file4.txt
> ~/toto/file5.txt
Я заполняю массив ARRAY для храненияэтот список:
readarray ARRAY < MyFile.txt
или
while IFS= read -r line
do
printf 'TOTO %s\n' "$line"
ARRAY+=("${line}")
done <MyFile.txt
или
for line in $(cat ${MyFile.txt}) ;
do echo "==> $line";
ARRAY+=($line) ;
done
Все эти методы хорошо работают для заполнения массива,
echo "0: ${ARRAY[1]}"
echo "1: ${ARRAY[2]}"
> 0: ~/toto/file1.txt
> 1: ~/toto/file2.txt
Это круто. но моя проблема заключается в том, что если я пытаюсь проверить содержимое файла, он не работает, похоже, что он не расширяет содержимое файла
diff ${ARRAY[1]} ${ARRAY[2]}
diff: ~/toto/file1.txt: No such file or directory
diff: ~/toto/file2.txt: No such file or directory
, но при печати содержимого: echodiff $ {ARRAY [1]} $ {ARRAY [2]}
diff ~ / toto / file1.txt ~ / toto / file2.txt
и выполнитья получаю ожидаемый diff в файле diff ~ / toto / file1.txt ~ / toto / file2.txt
3c3
< Param = {'AAA', 'BBB'}
---
> Param = {'AAA', 'CCC'}
, тогда как, если я заполняю ARRAY вручную таким образом:
ARRAY=(~/toto/file1.txt ~/toto/file2.txt)
diff работает хорошо.
У кого-нибудь есть идеи? Большое спасибо С уважением, Томас