我一直在尝试学习Linux shell,我想做的事情很简单:运行一个脚本,在该脚本中它会自动查找当前目录中的所有文件夹,并将这些文件夹名称动态添加到数组中。这是到目前为止我得到的:
#!/bin/bash
currdirectory="$(ls -d */ | sed 's/.$//')" #getting all the folders' names in a string without the '/' at the end
numberLines="$(ls -d */ | sed 's/.$//' | wc -l)" #count the number of output lines
FOLDER_NAMES=() #create the array
for (( i=1; i<=$numberLines; i++ ))
do
line="${$currdirectory | sed -n ${i}p}" #adding the output of a current i line to the variable line
FOLDER_NAMES+=($line) #adding the element itself to the array
done
echo "FOLDER_NAMES: ${FOLDER_NAMES[*]}" #show array values
但是,它不起作用,数组中的所有元素都有所有的行,我不明白,因为如果我使用
ls -d */ | sed 's/.$//' | sed -n 3p #3 for example
直接在外壳上有效。我可能在语法上犯了错误。