Esta es una variante del hack exec. En los días previos a que los intérpretes pudieran ser especificados de manera confiable con un #!
, esto se usó para hacer que el shell exec perl. El if 0
en la segunda línea nunca es leído por el intérprete de comandos, que solo lee la primera línea y ejecuta perl, que lee if 0
y no se vuelve a ejecutar.
Esta es una variante interesante, pero creo que no es del todo correcta. Parece estar configurado para funcionar con la shell bourne o con las variantes csh, utilizando la evaluación inicial para determinar el shell que está analizando y luego usando la sintaxis apropiada para pasar los argumentos a perl. La cláusula media es sintaxis sh y la última cláusula es apropiada para csh. Si el segundo &&
fuera ||
y el eval '(exit $?0)'
inicial fallara realmente en csh, entonces esto lograría esos objetivos, pero tal como está escrito, no creo que funcione para csh. ¿Hay algún comando que preceda a esto que establecería $?
en algún valor basado en el shell? Pero incluso si ese fuera el caso y $?
se establece en un valor distinto de cero, entonces no se ejecutará nada a menos que &&
se sustituya por ||
. Algo gracioso está sucediendo.
Gracias! ¿Qué es el 'exec hack'? ¿Te refieres a un 'shebang'? –
El hack de exec es básicamente cualquier técnica que usa exec para invocar un intérprete específico en lugar de usar una línea de shebang. –
Gracias! ¿Cuál sería la línea equivalente de 'shebang' entonces? De alguna manera, esta verificación 'eval' parece mucho más compleja que el simple hecho de solicitar el uso de un binario/intérprete específico. –