我不确定这是可行的吗?
但我有2个功能
do_get_array() {
getArray "/root/1.txt"
for e in "${array[@]}"
do
do_otherfunction $e
done
}
do_otherfunction() {
cmd="Print Me $e"
}
getArray() {
i=0
while read line # Read a line
do
array[i]=$line
i=$(($i + 1))
done < $1
}
echo "cmd"
所以,将参数从1个函数传递到另一个函数..但是我不知道如何循环直到它在数组中的最后一个$ e?不确定我解释它是否正确。它回收了第一个$ e,但其余的没有。它就停止了。
答案 0 :(得分:1)
Echo&#39出了第一个$ e,但其余的没有。它就停止了。
您可能打算在函数内部执行echo
吗?
do_otherfunction() {
cmd="Print Me $e"
echo "$cmd" ## Or simply echo "Print Me $e"
}
或者您希望将所有消息保存到变量:
do_otherfunction() {
cmd=${cmd}"Print Me $e"$'\n'
}
虽然效率低下。
只是一些建议:
function do_get_array {
get_array "/root/1.txt"
for e in "${array[@]}"; do
do_other_functions "$e"
done
}
function do_other_functions {
echo "Print Me $e"
}
function get_array {
if [[ BASH_VERSINFO -ge 4 ]]; then
readarray -t array
else
local line i=0
while IFS= read -r line; do
array[i++]=$line
done
fi < "$1"
}