Tengo este script de prueba sh que puedo ejecutar en mi computadora y que se supone que no produce nada si todo funciona. He usado scp para transferir todo lo que hay en la carpeta en la que estoy trabajando a un servidor remoto y cuando lo ejecuto en el servidor remoto obtengo errores como
egrep: Unmatched ) or \)
egrep: Unmatched ) or \)
./script.sh: line 229: ./helperScripts/script2.pl: No such file or directory
No recibí estos errores en mi computadora y cuando reviso que script2.pl está en helperScripts, está allí
Cuando ejecuto sh -version en el servidor remoto obtengo
GNU bash, version 4.1.2(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Cuando ejecuto sh -version en la terminal de mi computadora, aparece
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)
Copyright (C) 2007 Free Software Foundation, Inc.
No sé si esto importa. ¿Alguien sabe qué puedo hacer? Preferiría no tener que reescribir cosas en mi guión porque he estado intentando hacerlo y parece que siguen surgiendo más problemas cuando hago los nuevos.
Respuesta1
no lo hacenecesidadimporta, pero si,poderimporta dependiendo de cómo escribas. Y no proporcionó el script para que nadie le indicara cómo escribir para ningún shell Bourne. Si prefiere tener versiones de BASH que sean más compatibles entre sí...
Instalarcerveza caseraen tu Mac usando Terminal.app
oiTerm2.app
. Y con Homebrew, instale BASH ( brew install bash
). Luego cambia tu shell en Mac: chsh -s /usr/local/bin/bash
. Cerrar sesión. Inicie sesión. Hoy, esto le brinda BASH 4.4 en macOS/OS X, que es mucho más compatible con las otras versiones de BASH que tiene. Esto no ahorrará algunas reescrituras de los scripts actuales, pero casi con seguridad eliminará los problemas de los scripts nuevos.
Los scripts locales de Mac también se pueden utilizar #!/usr/local/bin/bash
sin cambiar el shell.
Es posible que también necesites instalar Xcode para compilar software desde Homebrew. Si no lo ha hecho después de instalar Xcode (desde la App Store), instale las herramientas de línea de comandos de Xcode con xcode-select --install
.