Используйте другой вариант команды в Solaris - PullRequest
0 голосов
/ 13 июля 2011

Поскольку Solaris grep по умолчанию не имеет опции -E, мне придется обновить bash для работы с конкретным grep.Вот что я делаю.

Он работает в командной строке, но когда я помещаю его в файл bash, похоже, что скрипт его не берет и все равно использует обычный grep.(Я не хочу менять всю переменную $ PATH.)

Пожалуйста, сообщите:

export isSolaris=`uname -a | grep -i "sunos"`
if  [ -n "$isSolaris" ]; then
        alias grep="/usr/xpg4/bin/grep -E";
fi

Ответы [ 2 ]

0 голосов
/ 13 июля 2011

Попробуйте вместо этого использовать egrep; вероятно, он работает везде, хотя POSIX / SUS больше не отображает его как команду. (SUS v2 от 1997 года перечислил egrep как «устаревшую» утилиту; POSIX 1003.1: 2004 опущен egrep).

0 голосов
/ 13 июля 2011

bash и ksh не обрабатывают псевдонимы, определенные в файле, до тех пор, пока файл не будет прочитан ... что означает, что вы не можете определить его в том же сценарии, который будет его использовать. Вы можете поместить его в другой файл, а . (source) - в свой сценарий.

Альтернативно, используйте функцию оболочки.

mygrep() {
  if test -n "$isSolaris"; then
    /usr/xpg4/bin/grep -E ${1+"$@"}
  else
    grep ${1+"$@"}
  fi
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...