我正在编写一段Bash脚本,这个脚本针对一个特定目录下的多个子文件夹进行操作。我想要列出所有子文件夹的名称,并将结果读入一个数组中,但要忽略名为“cmmdm”的单个文件夹。在将名称读入数组后,我想生成一个菜单,在该菜单中每个子菜单名称都是一个选项,用户可以根据选择的选项对给定的子文件夹执行不同的函数。
编辑: 抱歉,我应该先附上我的初始代码:
编辑: 抱歉,我应该先附上我的初始代码:
#!/bin/bash
# - create array
declare -a CDARRAY
# - set 0 to exit in prep for menu
CDARRAY[0]=exit
# - create a counter to use in while loop
count=1
# - while loop to itterate through folder and add each folder except cmmdm into array
ls -d /home/nginx/domains/* | {
while read CMMDOMAIN ; do
if [ $CMMDOMAIN != "/home/nginx/domains/cmmdm" ]
then
$CDARRAY[$count]=$CMMDOMAIN
echo $CDARRAY[$count]
count=$[count + 1]
fi
done
}
这确实会遍历文件夹并忽略“cmmdm”,但是我添加变量CMMDOMAIN到数组的代码是错误的。我以前从未编写过bash脚本,所以我认为可能语法有误或者缺少括号或其他东西。
shopt -s extglob nullglob; array=( dir/!(cmmdm)/ )
。 - gniourf_gniourfset -x
查看每行执行时变量使用的值,这永远不会有害。祝好运。 - shellter