Enviado em 12/01/2020 - 18:20h
Tudo bem, galera? Eu ainda estou iniciando em shell script, tenho um conhecimento razoável sobre lógica de programação, desenvolvo algumas coisas em Python e Java (muito mais em Python).
Bom, a ajuda que eu preciso é com esse código abaixo:
O problema é que quando o script exibe no terminal o total de diretórios, é mostrado 58 ao invés de 37 e é mostrado um total de 238 ao invés de 118. Eu sei que isso é devido ao fato de que quando o array é criado, são contadas as palavras que estão dentro do array e não o nome das pastas como são. Por exemplo, se no diretório eu tiver duas pastas com o nome 'Pasta' e 'Nova pasta', o código vai criar o array 'pasta=(Pasta Nova pasta)' e se eu pedir pra imprimir o total de elementos no array, vai aparecer 3 ao invés de 2.
Como eu faço pra que o código crie o array com elementos de nome composto e seja contado como apenas um elemento?
Eu creio que deu pra entender. Agradeço a ajuda.
Bom, a ajuda que eu preciso é com esse código abaixo:
#!/bin/bash
drt=/media/SSD2/Python/*
rmv=$[ ${#drt} - 1 ]
c=0
for x in $drt
do
c=$[$c + 1]
if [ -d "$x" ]
then
d+=(${x:$rmv})
elif [ -f "$x" ]
then
arq+=(${x:$rmv})
fi
a+=($x)
done
echo "DIRETÓRIOS: ${d[*]}"
echo "${#d[*]}"
echo
echo "ARQUIVOS: ${arq[*]}"
echo "${#arq[*]}"
echo "${#a[*]}"
echo "$c"
O problema é que quando o script exibe no terminal o total de diretórios, é mostrado 58 ao invés de 37 e é mostrado um total de 238 ao invés de 118. Eu sei que isso é devido ao fato de que quando o array é criado, são contadas as palavras que estão dentro do array e não o nome das pastas como são. Por exemplo, se no diretório eu tiver duas pastas com o nome 'Pasta' e 'Nova pasta', o código vai criar o array 'pasta=(Pasta Nova pasta)' e se eu pedir pra imprimir o total de elementos no array, vai aparecer 3 ao invés de 2.
Como eu faço pra que o código crie o array com elementos de nome composto e seja contado como apenas um elemento?
Eu creio que deu pra entender. Agradeço a ajuda.