loop do shell bash por meio de conteúdo de lista de diretórios e executabilidade

0

Atualmente, estou trabalhando em uma tarefa de casa e preciso pegar um determinado caminho de diretório e, a partir dessa lista, os arquivos e diretórios contidos nele. Enquanto também inclui se é executável ou não. Eu também estou restrito por não ter permissão para usar outras linguagens, exceto o bash.

Meu pensamento original era usar ll e cut para conseguir o que eu precisava, mas não conseguia fazê-lo funcionar. Então eu estava pensando que eu poderia usar algo como (não funciona, apenas uma ideia)

read input
for f in $input
do
if [[ -x "$f" ]]
then
echo "$f is executable"
else
echo "$f is not executable"
fi
done

Eu preciso que a saída seja algo assim e não sei como chegar lá

file-name1 is executable

file-name2 is not executable

directory1 is executable

    
por Joe 16.02.2016 / 18:05

2 respostas

0

Tente

my=($(ls -la $dr |awk {'print $9'}))  
echo ${my[@]}  
for i in "${my[@]}"  
do  
    if [[ -x "$i" ]]  
    then  
        echo "File '$i' is executable"  
    else  
        echo "File '$i' is not executable or found"  
    fi  
done                   
    
por 16.02.2016 / 19:15
0

Você está pegando um diretório e verificando se o diretório em si é executável e não está olhando para o conteúdo como deseja.

read input
for f in ${input}/*; do
    echo -n "$f is "
    type=""
    if [[ -x "$f" ]]; then
        type="executable"
    else
        type="non-executable"
    fi
    if [[ -d "$f" ]]; then
        type="$type directory"
    fi
    echo "$type"
done

Certificar-se de que o valor de $input seja um diretório legível é um exercício que deixarei para você.

    
por 16.02.2016 / 19:33