Добрый вечер!
Возникла необходимость подгузить в массив файл, содержащий строки, типа, "*/*". Если пытаться грзуить через arr=( $(cat file) ) , то звёздочки заменяются всевозможными каталогами и подкаталогами. Попытки вытащить данные циклом проваливаются также. Как бы этого избежать?
Решено: загрузка массива из файла в bash (проблемы со звёздочками)
Модераторы: /dev/random, Модераторы разделов
Re: Решено: загрузка массива из файла в bash
Попробуй экранировать звёздочку символом '\'
- Uncle_Theodore
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Решено: загрузка массива из файла в bash
Ничего никуда не подставляется.
Код: Выделить всё
[code]cat ff.txt
abra*/*cadabra
*/*lalala
*ieie*/*
Код: Выделить всё
cat rr.sh
#!/bin/bash
arr=( $(cat ff.txt))
for((i=0;$i<${#arr[@]};i++))
do
echo ${arr[$i]}
done
Код: Выделить всё
./rr.sh
abra*/*cadabra
*/*lalala
*ieie*/*
Re: Решено: загрузка массива из файла в bash
Экранировать звёздочку в файле не хочется. Попытки сделать замену при подгрузке через cat | tr не увенчались успехом.
2Uncle_Theodore
Код: Выделить всё
$ cd
$ cat test.sh
#!/bin/bash
arr=( $(cat test.file))
for((i=0;$i<${#arr[@]};i++))
do
echo ${arr[$i]}
done
$ echo '*/*' > test.file; cat test.file
*/*
$ chmod +x test.sh && ./test.sh
bin/ie6
Desktop/Home.desktop
Desktop/IE6.0.desktop
Desktop/System.desktop
Desktop/trash.desktop
docs/abs-book.html
#ну и всё, что есть в home глубины 2
Re: Решено: загрузка массива из файла в bash
Решение оказалось до безобразия просто:
set -f
set -f