我有这个代码,当我在FreeBSD中尝试它时,它向我显示了很多错误......我该如何解决?我检查目录,如果它与变量IGN匹配。 NAME_d应该是一个数组。
max_d=$(find "${DIR}" -type d | wc -l)
for i in `seq 1 $max_d`
do
check_d=$(find "${DIR}" -type d | head -n "${i}" | tail -n -1 | tr '\/' '\n' | egrep -n "${IGN}")
if [ ! -z "$check_d" ]; then
NAME_d+=$i"d "
fi
done
directory_d=${NAME_d[*]}
sedCmds_d=${directory_d// /;}
答案 0 :(得分:1)
不确定它是否会解决它,但如果您使用bash,则应将NAME_d作为数组启动
NAME_d=()
然后添加到数组中你还应该使用parens,例如
NAME_d+=("${i}d ")
答案 1 :(得分:1)
数组是Almquist shell不支持的基础,它是FreeBSD上的默认bourne样式shell(即/ bin / sh)。 shell的一个优点是大多数脚本的运行速度提高了大约3倍。
如果您想使用bashisms,请使用bash来执行您的脚本。例如。称之为bash dirstat.sh
或更改shebang。
这是FreeBSD的正确版本。
#!/usr/local/bin/bash
这是便携版,但需要设置PATH:
#!/usr/bin/env bash
您可能还必须先安装bash:pkg add bash