创建并循环shell中的文件夹数组

时间:2014-02-28 16:55:06

标签: arrays bash shell zsh

请随意将问题重命名为更合适的内容。

我如何使用zsh代替下面的bash

mkdir folder1
mkdir folder2
mkdir folder3

# zsh

folders=(folder*) | print $folders
#folder1 folder2 folder3

# bash

folders=(folder*/) | echo $folders
#folder1

如您所见,这只输出第一个元素。

任何指示都将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:4)

尝试将其更改为:

folders=(folder*); echo "${folders[@]}"
  • folders[@]提供数组中的所有元素
  • ${}将上面命令的输出扩展为bash。

答案 1 :(得分:0)

如果让我们说,您在某个目录中有多个.txt文件,并且您希望获取/显示这些文件夹。你可以尝试这样的事情:

declare -a folder_arr
i=0


for dir in *.txt; do

folder_arr[i]=$dir
i=$((i+1))
done

for j in $(seq 0 $((i-1)))
do
echo ${folder_arr[$j]}
done

我执行了上述文件并且能够得到预期的结果。

   /temps$ ./dirrr.sh
    z.txt