LinuxForum.Fans
Тема

Cкрипт для удобной маскировки пакетов в Gentoo

Автор: fragment 3 сообщений 3122 просмотров
#312301

Написал скрипт для удобной маскировки пакетов в Gentoo. Синтаксис такой:

text

mask <package> <template> <version>

например:

text

mask vlc >= 2.0.0

Кусок скрипта:

text

pkg_name="$1"
if echo "$pkg_name" | grep "/" &>/dev/null
then
  pkg_full_name="$pkg_name"
else
  pkg_full_name=`FORMAT='<category>/<name>\n' eix -e "$pkg_name"`
  if [ $? -ne 0 ]
  then
    echo $(color ltred)"Package "$pkg_name" not found!"$(color off)
    exit 1
  elif [ `echo "$pkg_full_name" | wc -l` -ne 1 ]
  then
    echo $(color ltyellow)"Too much results for "$pkg_name""$(color off)
    exit 1
  fi                    
fi
if [ -z "$2" ]
then
  if grep ="$pkg_full_name"-9999 "$mask_file" &>/dev/null
  then
    echo $(color ltyellow)""$pkg_full_name"-9999 has been masked already"$(color off)
    exit 1
  else
    echo "="$pkg_full_name"-9999" >> "$mask_file"
    echo $(color ltgreen)""$pkg_full_name"-9999 has been masked"$(color off)
  fi
else  
  mask_file_line="$2""$pkg_full_name"-"$3"
  if grep "$mask_file_line" "$mask_file" &>/dev/null
  then
    echo $(color ltyellow)""$mask_file_line" has been masked already"$(color off)
    exit 1
  else
    echo "$mask_file_line" >> "$mask_file"
    echo $(color ltgreen)""$mask_file_line" has been masked"$(color off)
  fi
fi

так работает нормально:

text

nona ~ # mask vlc = 2.0.0
=media-video/vlc-2.0.0 has been masked

а вот так - ненормально:

text

nona ~ # mask vlc <= 2.0.0
2.0.0media-video/vlc- has been masked

Почему строка оказывается переколбашенной?

#312342

">" и "<" -- указание на перенаправление ввода/вывода в *sh, закавычивайте при помощи апострофов, кавычек или "\":
mask vlc \<= 2.0.0
mask vlc '<=' 2.0.0
mask vlc "<=" 2.0.0

#312346
bormant написал:
">" и "<" -- указание на перенаправление ввода/вывода в *sh, закавычивайте при помощи апострофов, кавычек или "\":
mask vlc \<= 2.0.0
mask vlc '<=' 2.0.0
mask vlc "<=" 2.0.0

Да, уже дошло. Заменил < и > на - и +.

Войдите или зарегистрируйтесь, чтобы ответить.