На свежей установке Ubuntu 14.04 на DigitalOcean я смог решить эту проблему, просто выполнив
sudo apt-get install python-dev
и затем повторно выполнив команду pip install внутри python venv
pip install Pillow
Cambie la línea if
a:
if [ "$filename" != even ] && [ "$filename" != odd ]
En el shell bash
, todo el script,(es decir, de for
a done
inclusive ), se puede simplificar a:
GLOBIGNORE=even:odd ; printf "%s\n" *
Otro bash
método:
shopt -s extglob # only needs to be done once, if not set already.
printf "%s\n" !(odd|even)
O un par de corchetes con -a
for filename in *
do
if [ "$filename" != even -a "$filename" != "odd" ]
then
echo "$filename"
fi
done
o
for filename in *
do
case "$filename" in
(even|odd) ;;
*) echo "$filename" ;;
esac
done
El operador de comparación -ne
es un operador aritmético , es decir, compara solo números enteros:
i=7
if [ "$i" -ne 6 ] && [ "$i" -ne 8 ]; then
echo 'i is neither 6 nor 8'
fi
Para comparar cadenas para la desigualdad, use!=
:
if [ "$filename" != 'even' ] && [ "$filename" != 'odd' ]; then
printf '%s\n' "$filename"
fi
O, usandocase
:
case "$filename" in
even|odd) ;;
*) printf '%s\n' "$filename"
esac
También tenga en cuenta que *
coincidirá con cualquier nombre en el directorio actual, no solo con los nombres de los archivos normales. Para asegurarse de que solo procesa archivos regulares en su ciclo, use
for name in *; do
test -f "$name" || continue
# other code here using "$name"
done
test -f "$name"
puede ser reemplazado por
if [ ! -f "$name" ]; then
continue
fi
o simplemente
[ ! -f "$name" ] && continue
o
[ -f "$name" ] || continue
La declaración continue
salta a la siguiente iteración del ciclo.