функции в shell (хочу создать функцию в bash)

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

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

Аватара пользователя
netelis
Сообщения: 95
ОС: Debian Wheezy i686

функции в shell

Сообщение netelis »

хочу создать свою функцию на bash чтоб принимала параметры
есть ли такая возможность?
#!/bin/bash
function f1($t)
{
echo $t
}
read text
echo $text
f1($text)
тут выдает line 9: syntax error: unexpected end of file
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: функции в shell

Сообщение eddy »

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

#!/bin/bash
function a()
{
echo $1
}
read test
a $test
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
netelis
Сообщения: 95
ОС: Debian Wheezy i686

Re: функции в shell

Сообщение netelis »

а что нужно чтоб функция возвращала результат

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

#!/bin/bash
function a()
{
echo $1
return $1
}
read test
t= a $test
echo $t
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux

Re: функции в shell

Сообщение eddy »

function - по сути встроенный bash-скрипт. Поэтому возвращать результаты в таком виде, как вы хотите, она не может (только числовые значения от 0 до 255). Если необходимо вывести что-нибудь из функции, делайте export VAR=$1, т.е. передавайте значения через внутренние переменные. Или же можно записывать внутри функции вывод в файл, а потом из него считывать информацию.
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4458
Статус: GNU generation
ОС: Debian GNU/Linux

Re: функции в shell

Сообщение Rootlexx »

eddy писал(а):
16.12.2008 14:39
function - по сути встроенный bash-скрипт. Поэтому возвращать результаты в таком виде, как вы хотите, она не может (только числовые значения от 0 до 255). Если необходимо вывести что-нибудь из функции, делайте export VAR=$1, т.е. передавайте значения через внутренние переменные. Или же можно записывать внутри функции вывод в файл, а потом из него считывать информацию.

Зачем файл, зачем внешние переменные?

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

function example_function()
{
        local var_int=${1-0}; # Если параметры функции не переданы, использовать 0
        let var_int++;
        printf "%d\n" $var_int;
}
extern_var_int=$(example_function 7);
printf "%d\n" $extern_var_int; # Выведет «8»
Спасибо сказали:
Аватара пользователя
netelis
Сообщения: 95
ОС: Debian Wheezy i686

Re: функции в shell

Сообщение netelis »

А как на tcsh функцию написать?И что б делала аналогично примеру выше.
Спасибо сказали: