2012-02-29 1 views
0
#! /bin/bash 


dir=$(find . -type f) 

echo ${dir[0]} 
echo "This is dir[0]" 
echo ${dir[1]} 

Я хочу, чтобы добавить все файлы рекурсивно в текущей директории в массив обр [], но выше код не удается,как добавить файл в текущей директории в массив

[email protected]:~/test/avatar$ ./new.sh 
./daily_burn.sh ./test.sh ./.gitignore ./new.sh 
This is dir[0] 

реж не массив в этом коде. Каков правильный путь? Благодаря !

ответ

1
dir=(`find . -type f`) 

echo ${dir[0]} 
echo ${dir[1]} 
+0

В первой строке не должно быть скобок! Это то, что оболочка жалуется -0403-057 Синтаксическая ошибка в строке 1: '('не ожидается' –

1
dir=$(find . -type f) 

должен быть

dir=(`find . -type f`) 
+0

Я думаю, вы пропустите' 'in() – looyao

+0

@looyao да! В любом случае, вы уже ответили .. :) – Kashyap

1

Вот небольшой полный тест оболочки для того, что вы хотите - выполнить его в безопасном месте, например, в то время как в/TMP:

# Prepare 
rm -rf root 

mkdir root 
mkdir root/1 
touch root/1/a 
touch root/1/b 
#touch root/1/"b with spaces" 
mkdir root/2 
touch root/2/c 
mkdir root/2/3 
touch root/2/3/d 

# Find 
echo --- Find 
find root 

# Test 
echo --- Test 
files=(`find root -type f`) 
echo $files 

# Print whole array 
flen=${#files[*]} 
for ((i=0; i < $flen; i++)); do 
    echo files[$i] = ${files[i]} 
done 

Выход этого:

--- Find 
root 
root/1 
root/1/a 
root/1/b 
root/2 
root/2/c 
root/2/3 
root/2/3/d 
--- Test 
root/1/a 
files[0] = root/1/a 
files[1] = root/1/b 
files[2] = root/2/c 
files[3] = root/2/3/d 

Остерегайтесь, однако, пробелов в файле - если вы раскомментировать комментируемой касание выше, удалив # перед этой линии:

#touch root/1/"b with spaces" 

вы получите следующее:

--- Find 
root 
root/1 
root/1/b with spaces 
root/1/a 
root/1/b 
root/2 
root/2/c 
root/2/3 
root/2/3/d 
--- Test 
root/1/b 
files[0] = root/1/b 
files[1] = with 
files[2] = spaces 
files[3] = root/1/a 
files[4] = root/1/b 
files[5] = root/2/c 
files[6] = root/2/3/d 

Очевидно, что вы можете сделать что-то вроде этого:

Надеется, что это помогает.

Смежные вопросы