На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random , Модераторы разделов
cy6erGn0m
Сообщения: 119
ОС: MandrivaLinux/Solaris 10
Сообщение
cy6erGn0m » 24.05.2009 23:52
Нужна помощь в написании скрипта..
Раньше я часто применял следующую конструкцию
Код: Выделить всё
BASEDIR=`dirname $0`
BASEDIR=`cd $BASEDIR; pwd`
export $la-la-la=$la-la-la:$BASEDIR/lala
...
Однако на устройстве нет dirname.. и никак не могу обойти это ограничение.
Однако могу пойти на уступку: в той же папке что и скрипт могу положить bin/dirname.
Сразу предупреждаю, что установить ничего не устройство нельзя. coreutils в чистом виде отсутствует.
I want to Believe!
They must find it difficult...
Those who have taken authority as the truth,
Rather than trusth as the authority.
/G.Messey/
Rootlexx
Бывший модератор
Сообщения: 4462
Статус: GNU generation
ОС: Debian GNU/Linux
Сообщение
Rootlexx » 25.05.2009 00:15
А cut и rev присутствуют? Можно сделать так:
Код: Выделить всё
function dirname()
{
printf "%s" "$1" | rev | cut -d '/' -f 2- | rev;
}
Можно ещё сделать так:
Код: Выделить всё
function dirname()
{
local path="$1";
printf "%s" "${path%/*}";
}
cy6erGn0m
Сообщения: 119
ОС: MandrivaLinux/Solaris 10
Сообщение
cy6erGn0m » 25.05.2009 00:40
Да, второй вариант прошёл, написал:
Код: Выделить всё
BASEDIR="$0"
BASEDIR="${BASEDIR%/*}"
BASEDIR=`cd $BASEDIR; pwd`
echo "Base directory is $BASEDIR"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$BASEDIR/lib
..........
Спасибо большое!
PS: cut и rev отсутствовали.
I want to Believe!
They must find it difficult...
Those who have taken authority as the truth,
Rather than trusth as the authority.
/G.Messey/
Rootlexx
Бывший модератор
Сообщения: 4462
Статус: GNU generation
ОС: Debian GNU/Linux
Сообщение
Rootlexx » 25.05.2009 01:56
Правда, есть один нюанс: если путь заканчивается на «/» (или это корень
), то результат будет неожиданным. В таком случае надо использовать:
, что гарантирует наличие символов после «/». Это сразу захватывает все случаи:
Код: Выделить всё
alexey@desktop:~$ s="/usr/share/apps"
alexey@desktop:~$ echo ${s%/?*}
/usr/share
alexey@desktop:~$ s="/usr/share/apps/"
alexey@desktop:~$ echo ${s%/?*}
/usr/share
alexey@desktop:~$ s="/"
alexey@desktop:~$ echo ${s%/?*}
/
alexey@desktop:~$