У меня есть эта проблема, у меня есть два (bourne) сценария оболочки, только с подпрограммами, другой с основной программой.
Проблема заключается в передаче аргументов.
В моем скрипте подпрограммы у меня есть это:
test()
{
echo "$1"
}
При вызове из основной программы, например:
test "foo bar"
Результатом эха является 'foo bar' (обратите внимание на одинарные кавычки)
Когда я изменяю свой тест на это:
test()
{
FOOBAR="foo bar";
echo "$FOOBAR"
}
Тогда результат не содержит кавычек.
Тогда подпрограмма получается так:
. testroutines.sh
Используя sh -x, я вижу, что переданная переменная кажется заключенной в одинарные кавычки?
Чего мне не хватает?