arairs
(usa CentOS)
Enviado em 21/12/2021 - 12:45h
Olá pessoal,
Estou tentando construir um script que me traga os discos não utilizados no Linux (Oracle Linux). Para isso, estou fazendo em duas partes, primeiro vou verificar discos que não têm nenhuma partição criada ($i), e depois verificar os discos sem ponto de montagem ($x). Porém, em algum momento haverá duplicidade nesses dois arquivos, e estou com problemas justo nessa parte de eliminar o que está repetido. Vou postar o script todo e comentar a parte que estou com problemas:
#cria lista com a quantidade de partições de cada disco
var1=$(partprobe -ds | awk '{print $NF}')
#Filtra a saída acima para que aparece apenas o disco e o numero da partição
var2=$(partprobe -ds| tr -d : | awk -F " " '{print $1 $NF}' | awk '{print substr($1,6); }' )
#Filtra todos os discos que não possuem ponto de montagem
var3=$(lsblk --noheadings --raw | awk '$1~/s.*[[:digit:]]/ && $7==""' | awk '{print $1}' | awk 'NR > 1 { print prev } { prev = $0 }')
#Esse for compara a saida do partprobe com a quantidade de partição. Menos que uma partição, o disco não tem nenhuma partição. Mais que uma ele tem, ai gera os arquivos txt
for i in $var1
do
if [ "$i" -lt 1 ]; then
partprobe -ds | awk '{print $1, $NF}' > menor_que_1.txt
else
partprobe -ds | awk '{print $1, $NF}' > igual_ou_maior_que_1.txt
fi
done
#Pega o resultado desejad da $var1 e formata para retirar /dev e outros caracteres
var4=$(tr -d : <igual_ou_maior_que_1.txt | awk -F " " '{print $1 $NF}' | awk '{print substr($1,6); }' )
#ESTOU COM PROBLEMA AQUI. Quero que esse for compare: tudo que tem na var4 e var3, de maneira que, o que ja existe na var4(que é a mesma var1 mas sem caracteres indesejados), não seja exibido na var3.
#Atualmente esse for retorna apenas linhas vazias
for i in $var4 and x in $var3
do
if [ $x!=$i ]; then
echo $x
else
echo "Arquivo vazio"
fi
done
Também tentei um for dentro do outro, mas saiu tudo errado rsrs. Tentei também gerar um txt no lugar da var4, e usar esse txt pra comparar com a var3. Estou preferindo usar variáveis, porque eu não queria gerar um monte de arquivos de texto
Eu queria saber se da pra fazer esse tipo de comparação (linha a linha) com o for. Alguém poderia me ajudar, com o for ou mesmo com outra maneira de fazer essa comparação?