Tengo el relleno simplificado script en Mac OS X 10.12 :
#!/usr/bin/env bash
echo "=> BASH_VERSION = $BASH_VERSION"
function testForLoopMac {
local file
for file
do
echo File=$file
done | egrep "$file"
}
function testForLoopMacBis {
local file
for file
do
echo File=$file
done | egrep "$file|OK"
}
testForLoopMac $@
testForLoopMacBis $@
Pero el resultado cuando lo ejecuto es :
$ testForLoopMac.sh example.pdf
=> BASH_VERSION = 3.2.57(1)-release
File=example.pdf
egrep: empty (sub)expression
En Debian/Ubuntu Linux, el resultado es :
$ testForLoopMac.sh example.md
=> BASH_VERSION = 4.3.30(1)-release
File=example.md
File=example.md
Editar : Con bash4 en Mac OSX 10.12 :
He cambiado el tinglado por #!/usr/bin/env bash4
y el resultado es el mismo :
$ testForLoopMac.sh example.md
=> BASH_VERSION = 4.4.12(1)-release
File=example.md
egrep: empty (sub)expression
Edit: Gracias a vosotros entiendo la diferencia de comportamiento en Linux o BSD egrep
es porque en el momento de la egrep
la variable puede estar vacía.
Voy a utilizar por lo tanto, el siguiente regExp :
egrep "File=|OK"
Gracias de nuevo :)
0 votos
¿Puede añadir el
BASH_VERSION
¿tanto desde MacOS como desde Linux?1 votos
Creo que el script está demasiado simplificado para mostrar su verdadera intención. Se supone que los argumentos del script son expresiones regulares?
0 votos
@patrix Actualizo la Pregunta con la información de la versión de bash porque los comentarios sólo utilizan el formato mini-Markdown que es un dolor en el @~~
0 votos
Por si sirve de algo, es preferible editar la pregunta para incluir esa información en lugar de añadirla en los comentarios, ya que éstos son efímeros.
0 votos
@0942v8653 el script es ideal para mostrar cómo difiere la ejecución en MacOS y Linux. Que es de lo que trata la pregunta :-)