使用索引数组元素在bash中选择目录

时间:2016-06-03 15:51:01

标签: arrays bash

我正在尝试编写一个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]"

1 个答案:

答案 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