Portál AbcLinuxu, 4. prosince 2025 15:18
#!/bin/bash
function my_fnc ()
{
ARR=()
ARR+=("1")
ARR+=("2")
ARR+=("3")
ARR+=("4")
return $ARR
}
VAR=( ${my_fnc} )
echo ${VAR[@]}
Díky za pomoc
Řešení dotazu:
return: return [n]
Return from a shell function.
Causes a function or sourced script to exit with the return value
specified by N. If N is omitted, the return status is that of the
last command executed within the function or script.
Exit Status:
Returns N, or failure if the shell is not executing a function or script.
Jasné? Shell není C/Java/whatever. Funkce je spíš takový skriptlet a return vrací status jako ze subprocesu. Vytvářet pole z funkce obecně nedoporučuji. Pro práci s komplexními datovými strukturami není shell vhodný nástroj. You have been warned...
(a)
my_func() {
ARR=(1 2 3 4)
}
# prostě nastaví ARR
my_func
(b)
my_func() {
echo 1 2 3 4
}
# nastaví ARR podle na výstup my_func rozdělený na slova
ARR=($(my_func))
(c) komplexní varianty se změnou IFS a jánevímčeho...
exit -> $?).
Pokud je i tak potřeba hrát si v Bashi na programování silnější než použití k tomu vhodného nástroje, tak je to samozřejmě možné. Pokud vezmeme, že funkce bude vždy vracet pole, tak můžeme přepsat takto:
#!/bin/bash
function my_fnc()
{
local ARR=()
ARR+=("1")
ARR+=("2")
ARR+=("3")
ARR+=("4")
echo ${ARR[@]}
}
VAR=($(my_fnc))
echo ${VAR[@]}
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.