У меня есть относительная длинная коллекция скриптов, которые я сейчас оцениваю, и внося изменения в источник, чтобы выполнить тот же набор скриптов как в Linux, так и в блоках SunOS. Часть кода имеет простой Grep так:Универсальный подход к grep для Linux и Solaris
#Linux
echo -e "\n foo \n bar \n test ok" | grep -Evw 'foo|bar'
Моя портирование попытка работает нормально, если перевести как:
#SunOS
echo -e "\n foo \n bar \n test ok" | /usr/xpg4/bin/grep -Ev 'foo|bar'
Есть ли способ, чтобы написать один оператор в Bash для работы в обоих сценариях ? Или, должен ли я быть мысленно подготовлен, чтобы начать выполнять дополнительные инструкции if/else для каждой операционной системы?
В этом случае, кажется, что/bin/Grep может сделать и регулярных выражений и слов соответствия, а затем с/USR/BIN/Grep мы только можем сделать слово и не так:
$ echo -e "\n foo \n bar \n test ok" | grep -Evw 'foo|bar'
grep: illegal option -- E
Usage: grep [-c|-l|-q] -bhinsvw pattern file . . .
$ echo -e "\n foo \n bar \n test ok" | /usr/xpg4/bin/grep -Evw 'foo|bar'
Usage: grep [-c|-l|-q] [-bhinsvwx] pattern_list [file ...]
grep [-c|-l|-q] [-bhinsvwx] [-e pattern_list]... [-f pattern_file]... [file...]
grep -E [-c|-l|-q] [-bhinsvx] pattern_list [file ...]
grep -E [-c|-l|-q] [-bhinsvx] [-e pattern_list]... [-f pattern_file]... [file...]
grep -F [-c|-l|-q] [-bhinsvx] pattern_list [file ...]
grep -F [-c|-l|-q] [-bhinsvx] [-e pattern_list]... [-f pattern_file]... [file...]
Теперь это элегантно, мне нравится! – supertonic09