LINUX.ORG.RU

bash. передача аргументов в функцию.


0

1

всем привет.

два вопроса:

1. есть ли ограничение на кол-во аргументов?

2. как передавать аргументы в которых есть пробелы?

спасибо.

★★★

Последнее исправление: niXman (всего исправлений: 1)

2. Экранировать пробелы, не?

x3al ★★★★★
()

как передавать аргументы в которых есть пробелы?

записывать эти аргументы в кавычках в самом скрипте

#!/bin/bash
case $1 in
"chromium test" ) curl -s --url http://build.chromium.org/official/ | sed -n 's/^.*chromium-\(.*\).tar.bz2.*$/\1/p;' |tail -1;;
esac

[ megabaks@desktop ] ~ $ sh scripts/conky/update-checker chromium test
16.0.912.1
[ megabaks@desktop ] ~ $
megabaks ★★★★
()
Ответ на: комментарий от megabaks

к примеру, внутри функции, пытаюсь развернуть 10ый аргумент, а получаю какую-то крень.

[code]

some_function() {

echo 10=$10 }

...

some_function \ 1 \ 2 \ ... \ abc # 10ый

[/code]

10=10

воть.

niXman ★★★
() автор топика
Ответ на: комментарий от niXman

есть такая хорошая привычка - {} использовать для переменным
т.е.

echo 10=${10}

megabaks ★★★★
()

> 1. есть ли ограничение на кол-во аргументов?
Есть, сколько не могу сказать - много.
Чтобы передать произвольное количество аргументов в функцию, нужно их корректно принимать в функции

some_function() {
param1=$1; shift
param2=$1; shift
param3=$1; shift
...
paramN=$1; shift

}

2. как передавать аргументы в которых есть пробелы?


var_with_spaces=«some string with spaces»

some_function «some string with spaces» «${var_with_spaces}»

Slavaz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.