On Sun, Mar 11, 2007 at 05:32:21PM +0300, Konstantin A. Lepikhov wrote: > Update of /people/lakostis/packages/alterator-ovz.git > > Changes statistics since `a96538d610d45f2f6b1cae976a197fd1e49e68b6' follows: > alterator-ovz/backend3/ovz-ve | 11 +++++++++-- > 1 files changed, 9 insertions(+), 2 deletions(-) > > Changelog since `a96538d610d45f2f6b1cae976a197fd1e49e68b6' follows: > commit a2d633bece69be29cdd27646f52c227488c3b578 > Author: Konstantin A. Lepikhov > Date: Sun Mar 11 16:56:44 2007 +0300 > > - fix case where ve name is missing. > [...] > @@ -20,7 +20,13 @@ list_ve() > > get_veid() > { > - vzlist -aHoname,veid|tr -s ' ' '\t'| grep "^$1[[:space:]]"| cut -f2 > + case "$1" in > + [0-9]*) echo "$1" > + ;; > + *) > + vzlist -aHoname,veid|tr -s ' ' '\t'| grep "^$1[[:space:]]"| cut -f2 > + ;; > + esac > } > > get_ve_status() Проверка на численное значение вида [0-9]* не очень хороша тем, что 3foo подходит под эту проверку, но при этом не является числом. В /usr/bin/hsh-sh-functions есть специальная функция, используемая для проверки численного значения ключа: opt_check_number() { [ -z "$(printf %s "$2" |tr -d '[0-9]')" ] && [ "$2" -gt 0 ] 2>/dev/null || Fatal "$1: $2: invalid number." printf %s "$2" } По аналогии get_veid можно переписать так: get_veid() { local name="$1"; shift [ -n "$name" ] || return 1 if [ -z "$(printf %s "$name" |tr -d '[0-9]')" ] && [ "$name" -gt 0 ] 2>/dev/null; then echo "$name" else vzlist -aH -oveid,name | awk "-vname=$name" '$2==name{print $1;exit}' fi } -- ldv