-
Não use backquotes para substituições de comandos (em torno de
ls
). Não é muito legível e tem problemas. Se você tiver que usar a saída de outro comando, use$(command args1 args2)
form em vez -
Não analise ls . Use o shell globbing em vez disso:
for file in *
-
Cite todas as suas variáveis:
if [ ! -s "$file" ]
-
exit 55
não é um tipo muito comum para representar erros. Geralmente as pessoas usamexit 1
. -
Recue seu código para que fique claro o que cada parte está fazendo e onde cada instrução if começa / termina, onde cada loop começa, termina.
Este é o seu script fixo
#!/bin/bash
if [ -d Empty_Files ]
then
echo "This file directory exists already. Move on"
else
mkdir Empty_Files
echo "I created the Empty_Files directory since it didn't exist before"
fi
count=0
for file in *
do
if [ ! -s "$file" ]
then
count=$(( $count+1 ))
echo "Would you like" $file "moved to Empty_Files? It's empty! Enter Yes or No"
read userinput
if [ "$userinput" = "Yes" ]
then
mv "$file" ./Empty_Files
fi
if [ "$userinput" = "No" ]
then
echo "Ok, I will not move it!"
fi
fi
done
# quoting here not necessary because it's integer
if [ $count -eq 0 ];
then
echo "There are no empty files!"
exit 1
fi
Execução de teste
[2821][TESTDIR][11:14]:
$ tree
.
├── Empty_Files
└── move_empty.sh
1 directory, 1 file
[2821][TESTDIR][11:14]:
$ ./move_empty.sh
This file directory exists already. Move on
There are no empty files!
[2821][TESTDIR][11:14]:
$ touch empty1 empty2
[2821][TESTDIR][11:14]:
$ ./move_empty.sh
This file directory exists already. Move on
Would you like empty1 moved to Empty_Files? It's empty! Enter Yes or No
Yes
Would you like empty2 moved to Empty_Files? It's empty! Enter Yes or No
No
Ok, I will not move it!
[2821][TESTDIR][11:14]:
$ tree
.
├── empty2
├── Empty_Files
│ └── empty1
└── move_empty.sh
1 directory, 3 files