我正在尝试编写一个 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]"
你可以初始化一个数组并添加项目,就像这样
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