El código simple aquí funciona como se esperaba en mi máquina si se inicia con bash
:
function ⏰(){
date
}
⏰
¿Podría haber un problema para otras personas que usan esto, o es universal?
Me pregunto porque nunca he visto algo así en otro código fuente por ahora.
Editar: hay posibilidades ilimitadas, se puede usar para distinguir rápidamente una función con el uso de un emoji, por ejemplo.
A 💣 para algo que puede modificar o eliminar archivos, un 🔧 si es un trabajo en progreso, 📃 para un menú interactivo ...
Supongo que deberíamos crear un estándar para todo eso, pero parece ser una idea interesante.
Tal vez una línea aleatoria de ~ 5 caracteres puede ayudarnos a comprender mucho lo que está haciendo el código. (Por supuesto, necesitamos aprender a leerlos).
Más edición: le doy una oportunidad. Por ahora, si doblo todas mis funciones en mi editor (O cat myscript.sh|grep function
) se ven así. (Mi Unicode se ve mucho mejor geany
o mi terminal en comparación con aquí).
function ⬚_1(){
function ⬚⬚_2(){
function ⬚⬚⬚_📃_D(){
function ⬚⬚⬚⬚_📃_X(){
function ⬚⬚⬚⬚⬚_📃_Y(){
function ⬚⬚⬚⬚⬚⬚_❓_P(){
function ⬚⬚⬚⬚_📃_Z(){
function ⬚⬚⬚⬚⬚_❓_U(){
function ⬚⬚⬚⬚⬚_❓_O(){
Utilizo una sangría extraña ⬚ para mostrar cómo se relacionan las funciones entre sí y un símbolo 📃 / ❓ para distinguir claramente su función. (Por supuesto, estos no son los nombres de mis funciones reales, solo pongo una letra al azar al final, pero incluso sin ellos podemos ver claramente las relaciones).
echo $foo
es seguro.Respuestas:
Una guía útil para esto es la "Interfaz del sistema operativo portátil" (POSIX), una familia de estándares implementada por la mayoría de los sistemas tipo Unix. Por lo general, es una buena idea limitar los scripts de shell a las funciones exigidas por POSIX para asegurarse de que puedan utilizarse en diferentes shells y plataformas.
De acuerdo con la especificación POSIX de las definiciones de funciones en el "Lenguaje de comandos de Shell" :
Siguiendo el enlace a la definición de un "nombre" :
Ese conjunto de caracteres contiene solo caracteres entre U0000 y U007E.
Por lo tanto, caracteres como "⏰" (U23F0) no son válidos en un identificador compatible con POSIX.
Su caparazón puede aceptarlos, pero eso no garantiza que otros también lo hagan.
Para poder utilizar su script en diferentes plataformas y versiones de software, debe evitar el uso de identificadores no conformes como este.
fuente