В чем ошибка скрипта

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Аватара пользователя
yamah
Сообщения: 1116
ОС: Rosa Fresh, Debian, RELS

В чем ошибка скрипта

Сообщение yamah »

Есть скрипт запуска закачки кучи всего чего нужно. (Собственно заливка неофициальных репов в мандривы).
В качестве параметров передается куда качать и что конкретно качать.
Для особоизвращенных (то есть для меня :) ) нужно реализовать закачку через другой каталог.
Но скрипт выдает ошибку при проверки третьего условия.

Код: Выделить всё

#!/bin/sh

# Скрипт запускать с параметром версии дистрибутива и путь к репозиторию. Пример:
# 0_mirror 2010.1 ../ [--dtemp .download]



if [ "$1" = "" ];
    then
        verx=2010.1
    else
        verx=$1
fi

if [ "$2" = "" ];
    then
        pathx=../
    else
        pathx=$2
fi

len=${#pathx}
slen=$[ $len - 1 ]
enst= echo ${pathx: -1}

if [ "$enst" =  "/" ];
    then
        pathx2= echo ${pathx:):$slen}
        echo "yes"
    else
        pathx2= $pathx
        echo "no"
fi

if [ "$4" = "" ];
    then
        dtpath=/.downloads
    else
        dtpath=$4
fi


if [ "$3" = "--dtemp" ];
    then
        xpathx= echo $pathx2$dtpath
    else
        xpathx=$pathx
fi

sh mud.sh $verx $pathx/mud

exit 0


Вот как раз это условие if [ "$enst" = "/" ]; не проходит ни при каком значении pathx, естественно со слэшем на конце.

Где косяк я не знаю. Поэтому прошу о помощи.

Знаю, что скрипт можно упростить, выкинув лишние переменные. Но мне они понадобились для нахождения ошибки.
Понимание - это меч с тремя кромками: ваша правда, наша правда и Истина.
Жизнь - игра: сюжет задуман фигова, но графика хорошая...
Лучший игровой сервер - Земля: карта всего одна, но на 7 миллиардов игроков; читеров нет, админ терпеливый, но если уж забанит...
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5480
ОС: Gentoo

Re: В чем ошибка скрипта

Сообщение /dev/random »

yamah писал(а):
30.08.2010 21:39

Код: Выделить всё

enst= echo ${pathx: -1}

Спасибо сказали:
Аватара пользователя
yamah
Сообщения: 1116
ОС: Rosa Fresh, Debian, RELS

Re: В чем ошибка скрипта

Сообщение yamah »

/dev/random писал(а):
30.08.2010 21:43
yamah писал(а):
30.08.2010 21:39

Код: Выделить всё

enst= echo ${pathx: -1}


Я пробовал и такую конструкцию

Код: Выделить всё

slen=$[ $len - 1 ]
enst= echo ${pathx:$slen:1}

Толку не было.
Понимание - это меч с тремя кромками: ваша правда, наша правда и Истина.
Жизнь - игра: сюжет задуман фигова, но графика хорошая...
Лучший игровой сервер - Земля: карта всего одна, но на 7 миллиардов игроков; читеров нет, админ терпеливый, но если уж забанит...
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5480
ОС: Gentoo

Re: В чем ошибка скрипта

Сообщение /dev/random »

yamah писал(а):
30.08.2010 21:46
Я пробовал и такую конструкцию

Код: Выделить всё

slen=$[ $len - 1 ]
enst= echo ${pathx:$slen:1}

Толку не было.

Нужно так:
enst=$(echo ${pathx: -1})

А эта конструкция:
enst= echo ${pathx: -1}
означает: установить и экспортировать пустое значение для enst, выполнить в таком окружении команду echo ${pathx: -1} (с выводом в обычный stdout), вернуть старое значение переменной enst.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: В чем ошибка скрипта

Сообщение watashiwa_daredeska »

/dev/random писал(а):
30.08.2010 21:54
Нужно так:
enst=$(echo ${pathx: -1})
enst=${pathx: -1}
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5480
ОС: Gentoo

Re: В чем ошибка скрипта

Сообщение /dev/random »

watashiwa_daredeska писал(а):
30.08.2010 22:04
enst=${pathx: -1}

Ну да. Я просто минимально модифицировал оригинал.
Спасибо сказали:
Аватара пользователя
yamah
Сообщения: 1116
ОС: Rosa Fresh, Debian, RELS

Re: В чем ошибка скрипта

Сообщение yamah »

/dev/random, watashiwa_darede...!
Большое спасибо за помощь! И за урок по BASH-у.
Я забыл основы..

Но я сам себе злобный гоблин! Придумал лишнюю проблему и стал ее решать.
Понимание - это меч с тремя кромками: ваша правда, наша правда и Истина.
Жизнь - игра: сюжет задуман фигова, но графика хорошая...
Лучший игровой сервер - Земля: карта всего одна, но на 7 миллиардов игроков; читеров нет, админ терпеливый, но если уж забанит...
Спасибо сказали: