使用索引数组元素在 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]"

你可以初始化一个数组并添加项目,就像这样

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

相关内容

  • 没有找到相关文章

最新更新