2013-11-02 3 views
2

В следующем коде рекурсивно найдите подкаталог arg1 (по умолчанию pwd), помеченный каждой папкой или файлом номером. Затем попросите пользователя ввести номер и cd, чтобы этот ярлык с этим номером (если это каталог).bash shell code confusion

Но я не понимаю, где это число приходит из .... и как я могу контролировать глубину подкаталога он достигает ...

использования источника gd.sh Г.Д.

#!/bin/bash 

function gd() 
{ 
local dirname dirs dir 

if [ $# -gt 0 ] 
then 
dirname=$1 
else 
dirname=$(pwd) 
fi 

dirs=$(find $dirname -type d) 

PS3=`echo -e "\nPlease Select Directory Number: "` 

select dir in $dirs 
do 
if [ $dir ] 
then 
    cd $dir 
    break 
else 
    echo 'Invalid Selection!' 
fi 
done 

Спасибо за помощь :)

ответ

1

Номер получен из инструкции select ... in .... Он добавляет число для каждого элемента списка. Посмотрите на страницу manbash.

Для вашего второго вопроса, то используйте опцию -maxdepth из find:

dirs=$(find $dirname -maxdepth 2 -type d) 
+0

удивительных один, спасибо за помощь – Liduo