¿Por qué este script de shell se llama a sí mismo como script python?
Obviamente, este script de shell se llama a sí mismo como un script de Python:
#!/bin/sh ## repo default configuration ## REPO_URL='git://android.git.kernel.org/tools/repo.git' REPO_REV='stable' magic='--calling-python-from-/bin/sh--' """exec" python -E "$0" "$@" """#$magic" if __name__ == '__main__': import sys if sys.argv[-1] == '#%s' % magic: del sys.argv[-1] del magic : :
(Script completo: https://android.googlesource.com/tools/repo/+/v1.0/repo )
- Kivy: icono de notificación de multiplataforma
- ¿Cómo puedo obtener la versión del núcleo de Android vía adb (o vía comando Python)?
- Ejemplo de servicio Apache Thrift que utiliza HTTPS, en Python
- Verificación de la firma RSA de Google Licensing con PyCrypto
- Enviar eventos desde python a javascript usando sl4a
¿Puede alguien explicar
-
El propósito de llamarla así?
¿Por qué no tener#!/usr/bin/env python
en la primera línea por lo que se interpreta como script Python desde el principio? -
El propósito de agregar ese argumento de la última línea de comandos mágico, que se elimina después en el principio del código de Python?
- Build_native.py falla con error: crea una biblioteca dinámica para el proyecto .. falla
- Unicast UDP de Android funciona, pero la difusión no
- No se puede mostrar la cadena html en la vista web
- Transmita un mensaje a todas las máquinas disponibles en WiFi
- Problemas con la conexión Bluetooth de Android
- Kivy y buildozer "Permiso denegado"
- ¿Hay alguna manera de llamar a código python en android desarrollar sin instalar sl4a?
- Análisis del archivo de manifiesto de Android para buscar la etiqueta uses-permission usando python
Su primera pregunta: esto se hace para arreglar sistemas unix (o emulaciones de los mismos) que no manejan el #! Correctamente o en absoluto. El arte de alta es hacer un guión que es correcto en shell, así como en el otro idioma. Para perl, a menudo se ve algo como:
exec "/usr/bin/perl" if 0;
El exec es interpretado y ejecutado por el shell, pero el intérprete perl ve una sentencia condicional (…. si …) y no hace nada porque la condición es falsa.