EDICIóN GENERAL
289 meneos
8454 clics

Consejos para crear scripts con suficiente calidad para ser de producción [ENG]

Los scripts de shell son una forma de automatizar tareas en sistemas Linux/Unix (u otros sistemas operativos). En esta entrada se darán consejos básicos para escribir scripts con la suficiente calidad como para ejecutarlos en producción, escritos de una forma clara y limpia y reportando correctamente los errores detectados dejando la mejor huella posible.

| etiquetas: consejos , scripts , shell scripts , calidad , producción
141 148 4 K 388 SysDevs
141 148 4 K 388 SysDevs
Muy interesante: aunque se centra en Korn Shell para máquinas *NIX, da unos consejos sobre "best practices" que son extrapolables al resto de lenguajes de shell, incluído PowerShell y el CMD de Windows. :-)

Gracias por compartirlo.
#1 ...scripts xa hombres de verdad...

Tenia que decirlo, tenia que decirlo
#24
Wayfarer #1 tunic #2 tigre69 #4 #20 Sorry chicos! en teoria tenia que ser un UPVOTE!! lo que deberia haber salido!
Compenso!!!
(...)
Han salido votos del tiron... 6 jiasss!! al votar el script en plan metralleta

No no compenso.....,, por que logicamente en el propio acto , se ha inmolado el tengo karma con el que podria compensarlo
Al hablar de ficheros temporales no menciona el comando mktemp, creo que le viene al dedo:
Create a temporary file or directory, safely, and print its name. TEMPLATE must contain at least 3 consecutive 'X's in last component. If TEMPLATE is not specified, use tmp.XXXXXXXXXX, and --tmpdir is implied. Files are created u+rw, and directories u+rwx, minus umask restrictions.
#2 para que hablar de ello, si busca evitarlos a toda costa
#4 Si menciona los problemas que pueden surgir, pero precisamente el 3 diría que los puedes evitar con mktemps. Creo lo podría haber colado aunque fuese en el ejemplo de script que crea un fichero temporal.
#2 El tío busca portabilidad (por eso tira de ksh) y el comando mktemp no viene por defecto en todos los so que aún se usan en producción.

#5 Es de bash, eso en ksh no funciona.
#2 También se les ha pasado mencionar la práctica de emplear siempre las variables entrecomilladas: "$VARIABLE".

Si se hace así, en el caso de que la variable no esté definida, no casca al ser evaluada en un bucle if, for, etc.

Esto salva vidas
Magistral. ¡a portada!
Gracias @mr_b
Se olvidó del process substitution de bash: <(comando) >(comando)

Eso evita ficheros temporales tb.
#5 imagino que no lo comenta porque reduce la legibilidad, si ya le parece "mal" al autor el uso de los acentos agudos ..
El artículo es una jollita. A partir d hoy utilizaré pues el $
Y por cosas como estas sigo entrando en menéame
Diría también escribe muchos scripts pequeños que se llamen entre sí, no uno grande. Y escribe scripts que prueben los otros scripts: lo que se conoce como Unit Testing en otros entornos de programación también se puede hacer en Shell Scripting.
Para comentarios de muchas líneas prefiero usar << (comentario en bloque) en lugar de poner una almohadilla por línea, que es un rollo.

Por lo demás, está genial el artículo. No sabía lo de los paréntesis para el pipeline con nombre.
El artículo es interesante, sobretodo si cae dentro de tu area.

#11 Eso esta totalmente desaconsejado en prácticamente todas las best practices .
#12 no lo sabía.
Los informáticos sois tan,tan tontos que os creeis eso de que los scripts deben ser claritos y limpios... para que otros vengan a sustituiros fácilmente y cobrando menos.

Las cárnicas trabajan con programación orientada a objetos, y vosotros sois los objetos.
#14 "Las cárnicas trabajan con programación orientada a objetos, y vosotros sois los objetos." oye tio, vaya frase más ocurrente, que humor más acido, cuando sacas tu libro?
#33 un programador, para una cárnica, no es más que una caja negra con un input y un output.No es una persona, es una pieza de código. El negocio de las cárnicas es construir a base de piezas baratas y simples, con recambios fácilmente sustituibles, una gran maquinaria aparatosa e hipertrofiada.

Adivina quienes son los trabajadores en este esquema. Objetos exactamente iguales que las piezas de código, facilmente mantenibles ya que los muy gilipollas se venden baratos y esforzandose en ser claritos para que sean rápidamente sustituidos

es.wikipedia.org/wiki/Programación_orientada_a_objetos descripción de programador barato y puteado
#36 No hace falta que me expliques lo que es una cárnica, lo he vivido. Simplemente el símil con los objetos me parece una chorrada como un piano.
#36 Me gusta tu modelado, pero ten en cuenta que si no haces bien la ingeniería inversa esas cajitas negras pueden darte sorpresas.
#36 Eso serán algunos. Anda que no he conocido yo gente (yo mismo también en alguno de los sitios en qué he trabajado) que en cuanto han visto el tema se han ido a otro lado. El problema lo tienen los que aguantan carros y carretas.
#33 #14 tan ácido que, cuando muerde un limón, es el limón el que pone mala cara...es Professor, humíllate ante su Magnificientud!!
#44 Jajaja. Calla, calla, que me hice adicta a Menéame en parte por Professor.
#14 si tu idea es que escribiendo scripts sucios y que solo entiendas tú vas a tener un trabajo mejor pagado y conservarlo más tiempo, demuestras la poca experiencia que tienes en el campo. Pero claro, opinar es gratis.
#34 O es el tipico parásito que como no tiene ni puta idea lo que hace es poner zancadillas a los demas. Hay proyectos donde se estila mucho eso, como en Delta de Gas Natural. Tecnicos decentes pocos, inutiles pegando codazos hay a patadas (provided by Indra)
#14 alguien que opina así solo puede haber sido víctima de una cárnica. Por qué hablas entonces en segunda persona? Tan traumatizado estás con ese tema?
#14 DON'T FEED THE TROLL
#14 Has tenido días mejores. Seguro que no le compraste la cuenta al autentico Professor?
Del manual de GNU Bash:
Compound Commands
A compound command is one of the following. In most cases a list in a command's description may be separated from the rest of the command by one or more newlines, and may be followed by a
newline in place of a semicolon.

(list) list is executed in a subshell environment (see COMMAND EXECUTION ENVIRONMENT below). Variable assignments and builtin commands that affect the shell's environment do not remain in
effect after the command completes. The…   » ver todo el comentario
¿Y dónde queda el uso de <(...) en el apartado de los ficheros intermedios? ¿Es recomendable o no?
#16
Es una opción tan válida como las que se mencionan en la entradilla.
El pavo se monta un tubo con nombre, pero también puedes crear subprocesos y redirigir la entrada/salida de los mismos. Esos subprocesos los pones en un script distinto y asunto arreglado. Todo dependerá de lo reutilizable que sea la lista de comandos.
#18 "un tubo con nombre" {0x1f623}
#0 gracias. Mi nivel es muy bajo pero quiero aprender. Me gusta hacer pequeños scrips interactivos. Lo próximo que quiero hacer es aprender a usar sed.
#17 Quizás mejor ponte con awk directamente, en mi opinión es mas potente, pero para gustos...
#19 no se usar ninguno así que lo miraré. Un día me dijeron que no había que usar grep pero vamos el código que me propusieron de alternativa lo uso pero no lo entiendo. Ya digo que es nivel muy básico.
#21
«no hay que usar grep»
«no hay que usar goto»

:-P

Depende de qué quieras hacer. Sed es un editor. Grep es un buscador. Awk es un lenguaje.
#22 pues si es tan crimen como usar goto... intentare aprender la estructura rara que lo sustituye*. He visto que la gente usa awk pero no sabia que era un lenguaje.

*me recuerda a CSS en comparación con las etiquetas de align de HTML. Como complicar la vida algo que debería ser sencillo... Pero hablo como inexperto total.
#23 Usar grep, cut, join, sed, y demás no es ningún crimen. Abusar de ellos sí.
Usar goto es siempre un crimen.
El artículo es un poco flojo y lo perdió todo al empezar a abusar de awk. Lo mismo lo puedes hacer con sed también si te pones bruto. El tema es conocer las herramientas disponibles y utilizar la más apropiada. Muchas veces la legibilidad es preferible. Si el script se empieza a hacer complicado con muchos pipes y chequeos, o tengas q manejar estructuras, déjalo y lo reescribes en python.
Para bash os recomiendo esta página:
wiki.bash-hackers.org/start
#43 es la misma wiki que me recomendaron en el IRC de bash :-D ya he leído el articulo y lo que yo pueda hacer está a años luz de eso... Generalmente hago scripts para descargar con wget con log a un archivo, recortar imágenes, hacer optipng a un directorio recursivamente o archivar un montón de urls automáticamente. Eso es lo mas que hago porque no se programar. Aprendí un poco de C el año que hice informática pero muy poco. Así que lo de python pues difícil Jaja ^^U
#43 y 'tr', que yo mismo abusaba del sed hasta que aprendí cómo funciona, y es un complemento excelente para limpiar y reemplazar texto (ya no hablamos de pasarlo todo a mayúsculas o compactar separadores rollo space y tab). ;)
#21 sí hay que usar grep, pero no abusando ni a lo burro, pq peinar archivos puede ser muy pesado.
voy a probar un cosa....
LOL!
Hacer.. lo que se dice hacer... ha hecho algo .. ¿el que exactamente??? No sabemos  media
#26 Pues no sabria decir a ciencia cierta si ha funcionado o no...
Creo que ha votado positivo como una metralleta a los 4 primeros empezando por Fayerwayer y al 4 ha saltado el aviso de que se ha quemado todo el karma en el experimento este del Colisonador de Positivitrones
La Historia del este script en la derrotada del administrado troll psicotico de Plaza Pudimos

Era se una vez, un reino que se llama Plaza Pudimos, donde un troll facha, llamado LLulydermar, se hizo…  media   » ver todo el comentario
#29 No se por que la "h" de "hincando", si que consiedero que no ha quedar sola. Esa son las clases de faltas que no esta "Moralmente bien", que seria "separar a unos amigos", "Hincando" con "H", queda genial..
pero sin "h" {0x1f615} ... mññññ .. no queda bien
Aqui si es un caso claro donde la hortografia ha de respetarse {0x1f60c}
El artículo está muy bien hasta que empieza a abusar del AWK, que no es un comando sinó todo un lenguaje de programación (aunque el grueso lo usemos rollo cut+grep).
Los scripts donde los de sistemas vuelcan sus frustraciones de no haber llegado a programadores. :troll:
Lo voto cansina porque esto ni es noticia ni es nada. Luego nos quejamos de que nos encasillan.
Además que el 90% de los desarrollos se hacen a salto de mata y con prisa porque son para ayer .
#38 ¿Votas cansina un artículo del sub de "sysdevs"? mira la descripción del sub "SISTEMAS & DESARROLLO
Artículos técnicos sobre el desarrollo de software: algoritmos, programación de dispositivos, gestión de equipos, diseño de APIs, gestión de proyectos, avances en software libre, nuevos proyectos, tutoriales, documentación de funcionalidades… y administración de sistemas...
" el envío entra dentro de la temática del sub y no veo el cansinismo por ninguna parte. No tiene porque ser noticia, en el sub pone que se pueden enviar artículos técnicos.
#38 No veo por qué un meneo debe ser noticioso para ser interesante. Especialmente si está en una categoría dedicada a artículos informativos, como es el caso.

Y que tú trabajes como el culo no implica que los demás hagan lo mismo. Ahí estás bastante confundido. Lo que has expresado no es sino la mentalidad del inútil que sólo aspira a ser carne de cañón de empresas de bajo nivel.
#48 perdón su santidad. No sabía que España fuese el silicon valley de la informática.
Anda y vete a tomar por donde amargan los pepinos.
#49 No tiene nada que ver con España, en todos los países existe el nivel profesional-responsable y el nivel chapuzas-pepe-gotera. Adivina a qué nivel corresponde tu mentalidad.

Y seguro que encima te quejas porque te pagan una mierda. En fin...
#52 vivo en Inglaterra espabilado. En España da igual lo bien que hagas o no las cosas.
#53 ¿Qué parte de mi comentario #52 es la que no has entendido?

De hecho me la pela donde vives. En tu comentario #38 es trivial leer que tienes mentalidad de chapuzas, y eso tiene poco que ver con el país en el que vives.
#56 precisamente aquí si se me valora y en España no. En España cuanto más desgraciado y lamepollas eres mejor te va.
#57 Pues será que ésa ha sido tu desgraciada y felatriz historia. Pero no la proyectes en los demás, que muchos nos hacemos valer y nos va de puta madre.

Sucede que la mayoría cree que cualquier responsabilidad que no esté en el contrato es algo a evitar, no profundizan en el mundo empresarial más allá de los empleos de bajo nivel, y nunca llegan a enterarse de qué va la historia. Asi les va, que en la vida van a salir de peones. Pero porque no quieren, no por otra cosa.

E insisto en que chapuzas hay en todas partes, no sólo en España. Tú mismo eres un ejemplo. :roll: Y si realmente has hecho proyectos con gente de otros países deberías saberlo de sobra.
#58 pero si no me conoces tonto a las 2. Te he dicho que en España se trabaja chapuzas como lees o podrás leer en la noticia en portada de hoy.
En el extranjero se paga bien y te dan ganas de trabajar bien y de te valora.
#59 Ser un chapuzas es una mentalidad que no cambia con el sueldo.

Y sinceramente, que me llame tonto alguien que ve asumible hacer mal que un trabajo... xD

Lo dicho, con esa mentalidad de mínimo esfuerzo luego os quejáis del sueldo de mierda que os cae o le echáis la culpa al país. Pero los tontos son los demás, claro que sí. :roll:
#60 no chaval. Lo que pasa que tu debes de ser el único que no ha pasado por una consultoría.
Tu debes de ser el único listo y el mercado IT en España no debe de estsr mal segin tu, es que somos unos zoquetes.
Si te contase veces que he hecho el esfuerzo a cambio de nada en la empresa... anteriormente me refiero. Porque a la hora de asumir responsabilidades son tuyas pero a la hora de cobrar eres un don nadie. Parece mentira que no sepas que en España un programador es una chacha del…   » ver todo el comentario
#61 Que no he pasado por consultorías, dice... xD Posiblemente he tratado con más comerciales vendehumo y clientes ignorantes de los que verás en tu vida. La diferencia es que yo sé hacerme valer e imponer mi criterio técnico, en lugar de poner el culo y dejar que me entierren en mierda.

Lo dicho, estás describiendo empleos de bajo nivel en empresas de bajo nivel. Si como parece ésa es tu única aspiración, sinceramente no comprendo que te quejes de no encontrar otra cosa. El mundo empresarial es mucho más grande, como descubrirías si tu objetivo no fuese cumplir ocho horas haciendo lo justo.
#62 Entonces sabras muy bien que en muchos casos gente que se ha impuesto se ha encontrado al dia siguiente de patitas en la calle. Menos tonterias.

Te repito, que yo ahora mismo estoy fuera del pais. Haciendo lo mismo pero cobrando mucho mas, mucho.
#63 No sé qué entiendes tú por imponerse, pero pinta que para ti significa negarse y punto. Personalmente me impongo con criterios rentables, además de una calidad y esfuerzo distintivos y contrastados, y no he necesitado huir del país para cobrar ”mucho más, mucho”.

Hay buen trabajo si eres un activo valioso. El problema es que la mayoría de gente cree que ese valor está sólo en el conocimiento técnico, pero luego tienen una actitud de mierda basada en aspirar al mínimo esfuerzo, una…   » ver todo el comentario
#64 No chaval, yo se de gente que echaba mas horas que un reloj y si se le ocurria hacer sus horas e irse por estar hastalos cojones hasta tener que ir findes gratis terminaba en la calle.

Tu debes de ser el listo de turno, que eres una persona 10. Enhorabuena.

Somos todos basura menos tu y otros 2 elegidos. Lo curioso es que en otros paises no es asi, se te respeta.
La valia es que tu seas una persona profesional y especializada y hagas bien tu trabajo. Yo no tengo que preocuparme de aportar ninguna valia especial si lo que entiendes por valia es ser un lamepollas y entrajearte y codearte en reuniones.

Tu te crees mucho y que los demas somos unos mierda que pasamos de todo, hacemos lo minimo y nos vamos a casa.
#65 Eres arquetípico, ”jomío”, y ni te das cuenta. Una y otra vez defines el trabajo como ”hacer horas”, asumes que tu trabajo es el único que cuenta y que tus superiores no hacen nada, para ti ascender se consigue usando corbata y lamiendo pollas, y crees que la gente como tú debería tener sueldazo porque sí, ”sin aportar ninguna valía especial”.

Resumiendo, no tienes ninguna conciencia empresarial, sino una visión completamente infantil del trabajo. No hay forma delicada de decirlo: es tu…   » ver todo el comentario
#66 Tu eres tonto chaval. Que no te enteras. Que yo vivo fuera y te repito que aqui a un informatico sele paga bien y se le respeta y si, en españa ascender es llevar traje del zara, gomina y mentir mucho. Es asi de simple, porque a un programador se le considera un obrero del teclado. Punto.

Yo no digo que un programador tenga que ganar una fortuna, solo un sueldo justo.

Tu no me conoces de nada, lo mismo peino mas canas que tu espabilado.
#67lo mismo peino mas canas que tu espabilado”.

Lo dudo. Pero si crees que la conciencia empresarial te viene por antigüedad, ”vas dao”.

Y sí, alguien que no aporta nada más que trabajo técnico de base es un obrero. Aquí, en Reino Unido y en Madagascar. Que a ti eso te joda porque no sabes hacer nada más es otra cuestión.

Estás haciendo el payaso porque lo que tú llamas ”llevar traje de Zara, gomina y mentir mucho” es un ámbito empresarial que claramente desconoces por…   » ver todo el comentario
#68 Pero que dices so gilipollas, si no me conoces de nada. Aqui por lo pronto y poco que llevo se ha valorado bien mi trabajo, porque aqui se te mide en reuniones.

Y he estado en esas reuniones de una hora donde se podian haber ahorrado 55 minutos, en españa me refiero. Es justificar por justificar puestos inutiles, de gente que solo se dedica a no tener ni puta idea. Yo te hablo de la opinion mia y de ex compañeros.

Vete a tomar por culo anda.
#69 No sé en qué punto crees estar rebatiendo algo de lo que he dicho, pero no lo estás haciendo. Sólo lloriqueas sobre lo malos que son los demás porque no eres presidente y emperador del mundo por calentar una silla 25 horas diarias.

En fin... como tú por desgracia hay demasiados. No sé por qué tú y esos compañeros de los que me hablas os extrañáis de no llegar nunca a nada o de ser despedidos a la mínima que cambia algo en la empresa, si con esa nula mentalidad empresarial resultáis ser…   » ver todo el comentario
#70 Debe de ser que la direccion de la empresa se aseguró bien el culo con contratos blindados para no ser despeidod.

Lo que tu no entiendes de que situacion te hablo, de que debe de ser que tu eres el unico que no quiere ver que los jefecillos de turno son unos lamepelotas de mierda, que lo he visto toda la vida de dios.
#71 En las empresas que tú debes frecuentar no lo dudo, visto tu ”nivelazo”. Porque es tu falta de responsabilidad empresarial la que te condena a ese bajo nivel, entiéndelo en vez de ser tan quejicoso.

Que generalices el nivel de mierda en el que tú te mueves a todas las empresas de un país es otra inmensa tontería por tu parte. Sólo demuestras ser un llorica acusando al mundo de tu ineptitud para progresar.

Pero tío, que tú mismo te estás describiendo como alguien que sólo quiere dedicarse…   » ver todo el comentario
#72 Me contestas entonces de una vez porque en los comentarios de las noticias sobre IT de españa el 90% de los comentarios son identicos? Solo se quejan los padefos? Porque las tipicas noticias de que no encuentran informaticos en españa que sacan las carnicas? Acaso el sector no esta copado por 3 o 4 y sus empresas satelite?
Pero bueno, tu sigue acusandome... Yo me referia a inutiles en mi anterior empresa (la mayoria de consultorias son igual y las no consultorias tambien), aqui es gente

…   » ver todo el comentario
#73 O sea que si la mayoría de peones resultan ser lloricas inútiles, tu conclusión es que la culpa es de los superiores. :palm: Porque vamos, ni se te ocurre que la respuesta evidente a tu pregunta es que el 90% sois inútiles para cualquier tarea que implique un mínimo de responsabilidad empresarial.

Tu envidia tiñosa hacía los puestos de responsabilidad te supura por los poros. Sigues con la cantinela llorica de que los únicos que trabajáis sois los que hacéis el curro de base, algo…   » ver todo el comentario
#74 sólo te diré que hoy mismo me ha felicitado el jefe (es mas ha dicho medio coña que no se lo diga a la empresa que vende el software por si me contratan )haber resuelto un tema de una integración de un sistema de gestión de almacén que han comprado y conectarlo con el ERP en mas o menos un día, sin tener ni idea y conociendo poco como funcional el actual sistema de consolidación de pickings.

Me arremangue y lo he sacado cosa que mi compi es más de escurrir el bulto.
Esto en España sería: porque has tardado tanto? El cliente no va a pagar... aparte de que tu jefe pensaría que es una chorrada lo que has hecho, no entendería los problemas y porque no es tan fácil como te lo han vendido. Sencillamente porque es un ignorante amigo de .
#75en mas o menos un día, sin tener ni idea y conociendo poco como funcional el actual sistema”.

Vamos, que no haces más que rubricar tu imagen de chapuzas. :palm:

No me extraña que te hayan felicitado, en las empresas de bajo nivel se valora lo rápido y barato aunque funcione mal. Porque algo hecho ”en más o menos un día y sin tener ni idea” puedes estar bien seguro de que no va a funcionar como debe. Aunque fueses bueno, tío. Si se trata de una adaptación a medida eso es una…   » ver todo el comentario
#76 no es una consultora informática, es adaptar al ERP un sistema de gestión de almacén . No es ninguna chapuza gilipollas . Chapuza sería si parchease aquí y allá y fuera y no se a mi de esto no me digas que no es lo que yo programo . Esto tiene que funcionar bien porque si no no van a poder trabajar .
Y créeme que no es de los que dice que todo está bien.
Lo que pasa que no es un guay de decir Ale birn si majo. Te crees que a mi edad mo me doy cuenta?
Te crees que no te evalúan cada x meses?
#77 Lo que creo es que lo que describes es una chapuza de una empresa que se dedica a hacer chapuzas, ya te lo he dicho. De hecho no lo creo, lo sé. Demasiadas mierdas así he visto en mi vida. Luego no funciona o es inmantenible y es cuando hay que gastar pasta de verdad para arreglarlo.

Por cierto, si no entiendes que una adaptación de software a medida sí requiere de cierta cantidad de consultoría previa ya no sé qué decirte. Empiezo a pensar que lo único que has hecho es instalar un plugin para dos sistemas que ya estaban preparados para funcionar juntos. xD
#78 tienes la sesera demasiado pegada s la consultoría, es tu problema.
Yo también he visto chapuzas de campeonato pero este no es el caso, esto no es una consultoría de corta pega y corre.

Esta empresa no es una consultoría, te lo repito. Y para ser chapuzas el negocio vs como un tiro.
Pero bueno tu que cojones sabrás...
#79esto no es una consultoría de corta pega y corre”.

Es que no llega ni a eso, campeón, la tuya es una empresa donde una adaptación a medida la hace en un día un técnico que no tiene ni puta idea del tema ni de las necesidades de negocio. xD

Rentable no me extraña que sea, a corto plazo hacer las cosas mal suele serlo. Otra cosa es que funcionen como deben y sean mantenibles. Y a largo plazo ya ni te cuento.

Lo descojonante es que no te dés cuenta de que tu trabajo consiste en hacer chapuzas. Comprende que el que tú te cagues en los que hacen las cosas bien tiene menos peso que un cuesco en la Luna.
#80 pero como que no tengo ni idea desgraciado si llevo casi 10 años en esto.
Lo que tenía es que entender la parte de la pda y ver como comunica con el erp para tocarlo que no era fácil. He hecho la parte más jodida, queda probarlo y testearlo bien a fondo antes de que vaya a producción.

Bueno tu a lo tuyo chico.
Vete a tomar por culo anda.
#81 Es que ni entiendes lo que te dicen. Me parto. xD

No tienes ni idea, melón, ni idea de las necesidades de negocio del apaño que has hecho. Y no es porque lo diga yo, es que lo has dicho tú mismo en #75.

Tú eres de los que cree que todo el universo se reduce a la minúscula parte que tú ves. Por si no lo sabes, antes del testeo, las pruebas y la programación hay otras fases que os saltáis a la torera. Cómo no vas a pensar que los consultores no hacen nada, si no tienes ni puta idea de…   » ver todo el comentario

menéame