Saya memiliki skrip pengisian yang disederhanakan pada 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 $@
Tetapi hasil ketika saya menjalankan adalah:
$ testForLoopMac.sh example.pdf
=> BASH_VERSION = 3.2.57(1)-release
File=example.pdf
egrep: empty (sub)expression
Pada Debian / Ubuntu Linux, hasilnya adalah:
$ testForLoopMac.sh example.md
=> BASH_VERSION = 4.3.30(1)-release
File=example.md
File=example.md
Sunting: Dengan bash4 di Mac OSX 10.12:
Saya mengubah shebang ke #!/usr/bin/env bash4
dan hasilnya sama:
$ testForLoopMac.sh example.md
=> BASH_VERSION = 4.4.12(1)-release
File=example.md
egrep: empty (sub)expression
Sunting: Terima kasih kepada kalian, saya mengerti perbedaan perilaku di Linux atau BSD egrep
karena pada saat egrep
pelaksanaan variabel dapat kosong.
Saya akan menggunakan karena itu, regExp berikut:
egrep "File=|OK"
Terima kasih lagi :)
BASH_VERSION
keduanya dari macOS dan dari Linux?