История изменений
Исправление vodz, (текущая версия) :
результат выполнения функции можно вернуть либо через поток вывода, либо через глобальные переменные, либо через то и другое.
Результат работы функции - целая переменная в $? . Всё остальное - соглашение внутри самой программы, ибо количество изменяемых переменных в отличии от паскаля в shell определяется и соглашениями и в основном качеством кода :) А вот передача результатов через echo+read - объяснено ранее.
сколько проходов BASH делает для обычной интерпретации и сколько - для eval.
По сравнению с fork+write+read ? Да на много порядков меньше.
Да, и ещё расскажите мне, несведущему, как бы это так передать в eval код, в котором есть двойные и одинарные кавычки? Я имею в виду - код, не сформированный где-то сбоку заранее? ;)
Да пожалуйста, заодно ответ на bash - выполнить аргумент и вставить в выданную переменную (комментарий) для PPP328:
#!/bin/bash
declare -a var
foo() {
eval local -a __rezult=(\${$1[@]})
local i r
for ((i=0;i<${#__rezult};i++)); do
# echo "${__rezult[i]}"
r="${__rezult[i]}+$2"
eval $1[i]=\$r
done
}
var=(value1\" value2\')
foo var xxx\"\'zzz
echo ${var[0]} ${var[1]}
Исходная версия vodz, :
результат выполнения функции можно вернуть либо через поток вывода, либо через глобальные переменные, либо через то и другое.
Результат работы функции - целая переменная в $? . Всё остальное - соглашение внутри самой программы, ибо количество изменяемых переменных в отличии от паскаля в shell определяется и соглашениями и в основном качеством кода :) А вот передача результатов через echo+read - объяснено ранее.
Да, и ещё расскажите мне, несведущему, как бы это так передать в eval код, в котором есть двойные и одинарные кавычки? Я имею в виду - код, не сформированный где-то сбоку заранее? ;)
Да пожалуйста, заодно ответ на bash - выполнить аргумент и вставить в выданную переменную (комментарий) для PPP328:
#!/bin/bash
declare -a var
foo() {
eval local -a __rezult=(\${$1[@]})
local i r
for ((i=0;i<${#__rezult};i++)); do
# echo "${__rezult[i]}"
r="${__rezult[i]}+$2"
eval $1[i]=\$r
done
}
var=(value1\" value2\')
foo var xxx\"\'zzz
echo ${var[0]} ${var[1]}