Ho lo script di riempimento semplificato su 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 $@
Ma il risultato quando corro è:
$ testForLoopMac.sh example.pdf
=> BASH_VERSION = 3.2.57(1)-release
File=example.pdf
egrep: empty (sub)expression
Su Debian / Ubuntu Linux, il risultato è:
$ testForLoopMac.sh example.md
=> BASH_VERSION = 4.3.30(1)-release
File=example.md
File=example.md
Modifica: con bash4 su Mac OS X 10.12:
Ho cambiato lo shebang in #!/usr/bin/env bash4
e il risultato è lo stesso:
$ testForLoopMac.sh example.md
=> BASH_VERSION = 4.4.12(1)-release
File=example.md
egrep: empty (sub)expression
Modifica: Grazie a voi ragazzi capisco che la differenza di comportamento su Linux o BSD egrep
è perché al momento dell'esecuzione di egrep
la variabile può essere vuota.
Vado quindi ad utilizzare, il seguente regExp:
egrep "File=|OK"
Grazie ancora:)