我正在尝试编写一个bash函数,它将列出当前目录中的每个子目录和文件,并将它们编入索引,然后通过访问数组中的索引来cd进入所需的目录。当我在索引8处回显数组时,它输出0 [8]。为什么不输出目录名?
num=0
for dir in ./*
do
echo -n $num
echo -n ": "
echo $( basename $dir )
num=$(($num+1));
done
declare -a array=( $(for i in {0..$num}; do echo 0; done) )
for dir in ./*
do
for i in {0..$num};
do
if [ -z $array[$num] ]; then
$dir= basename $dir
$array[$num]= $num
fi
break
done
done
echo "Enter the directory number: "
read requested
cd "$array[$requested]"
答案 0 :(得分:1)
你可以初始化一个数组并添加像这样的项目
ARRAY=()
ARRAY+=('foo')
ARRAY+=('bar')
检索必须使用大括号的值
echo ${ARRAY[0]}
所以以下内容应该有效
#!/bin/bash
num=0
for dir in ./*
do
echo $num": " $dir
num=$(($num+1));
done
ARRAY=()
for dir in ./*
do
ARRAY+=("$dir")
done
echo "Enter the directory number: "
read requested
echo "you entered " $requested
echo "go to" ${ARRAY[$requested]}
cd "${ARRAY[$requested]}"
pwd