J'ai le remplissage simplifié script sur 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 $@
Mais le résultat lorsque j'exécute est :
$ testForLoopMac.sh example.pdf
=> BASH_VERSION = 3.2.57(1)-release
File=example.pdf
egrep: empty (sub)expression
Sur Debian/Ubuntu Linux, le résultat est :
$ testForLoopMac.sh example.md
=> BASH_VERSION = 4.3.30(1)-release
File=example.md
File=example.md
Edit : Avec bash4 sur Mac OSX 10.12 :
J'ai changé le shebang en #!/usr/bin/env bash4
et le résultat est le même :
$ testForLoopMac.sh example.md
=> BASH_VERSION = 4.4.12(1)-release
File=example.md
egrep: empty (sub)expression
Edit : Grâce à vous, je comprends la différence de comportement sous Linux ou BSD. egrep
c'est parce qu'au moment de la egrep
exécution, la variable peut être vide.
Je vais donc utiliser le regExp suivant :
egrep "File=|OK"
Merci encore :)