Bug no shell script para imprimir a estrutura em árvore do curc diretório

0

Eu escrevi o seguinte script:

  #!/bin/bash

if [ $# -eq 0 ]
then
    read current_dir
else
    current_dir=$1
fi

function print_tree_representation ()
{
    for file in 'ls -A $1'
    do
        local times_p=$2
        while [ $times_p -gt 0 ]
        do
            echo -n "----"
            times_p=$(( $times_p - 1 ))
        done
        echo $file

        if test -d $file
        then
            local new_path=$1/$file
            local new_depth=$(( $2 + 1 ))

            print_tree_representation $new_path $new_depth        
        fi
    done
}

print_tree_representation $current_dir 0

para imprimir a estrutura em árvore do diretório passado como argumento. No entanto, não vai além do segundo nível de profundidade. Não consigo descobrir o que está errado.

    
por cristid9 20.03.2016 / 12:06

1 resposta

2

O problema é com esta linha:

if test -d $file

O $file que você extraiu de ls -A não contém o caminho completo. Você pode consertá-lo substituindo essa linha por

if test -d "$1/$file"

Existe outro bug, que é o de quebrar por todo o lugar se um nome de arquivo tiver espaços nele. Coloque nomes de arquivos entre aspas.

    
por 20.03.2016 / 13:15