我正在努力绕过Bash数组,特别是我有这个函数,我需要加载一个数组;我写的是:
function list_files() {
for f in *; do
[[ -e $f ]] || continue
done
}
function list_array() {
array=list_files
number=0
for items in "${array[@]}"
do
let "number +=1"
echo -e "\033[1m$number\033[0m) $items"
tput sgr0
let "number -=$(echo "${#array[*]}")"
done
}
function list_array() {
array=list_files
number=0
for items in "${array[@]}"
do
let "number +=1"
echo -e "\033[1m$number\033[0m) $items"
tput sgr0
let "number -=$(echo "${#array[*]}")"
done
}
这里的问题是该函数只能工作一次,但我需要在脚本中多次运行。我不确定如何去做这件事。我必须在每次调用函数时清空并重新加载数组,或者我必须在函数参数中提供不同的数组名称(list_array myarrayname而不仅仅是list_array)。但是我不知道如何完成这些任务中的任何一个,或者它们是否可行。
非常欢迎任何帮助!
答案 0 :(得分:0)
有点不清楚你想要达到的目的;也许你可以从下面找到一些灵感:
#!/bin/bash
list_files() {
number=0
for f in *
do
if [[ -f $f ]]
then
number=$((number+=1))
echo $f, $number
fi
done
}
list_files_array() {
array=($1/*)
number=0
for item in ${array[@]}
do
if [[ -f $item ]]
then
number=$((number+=1))
echo $item, $number
fi
done
}
list_files $(pwd)
list_files_array $(pwd)