我正在编写一个bash脚本来遍历所有目录,并将目录重命名为数组的值,但似乎我的(第i个)值没有正确递增,它也说“(我)命令不是发现“当我运行我的bash脚本时。
以下是我的代码:我将Unix
内的值替换为占位符值。
#!/bin/bash
declare -a Unix=(value1 value2 value3 .... );
i = 0
for d in */; do
echo ${Unix[$i]}
#mv $d ${Unix[$i]}
(($i+1))
done
答案 0 :(得分:0)
你做错了两件事。首先,要回答你的问题,
(($i+1))
应该是
(($i+=1))
另外,你应该删除行
中的空格i = 0
所以它看起来像
i=0
答案 1 :(得分:0)
首先,您可能希望在mv
命令中引用目录名称,否则会遇到包含空格的名称的问题:
mv "$d" "${Unix[i]}"
如您所见,没有必要在i
的索引中添加$
,因为[]
是"算术上下文"在这里扩展变量名称。
其次,您的增量不执行任何操作:您只需向i
添加1并将结果抛弃。您可以改为使用增量运算符:
(( ++i ))
同样,不需要$
。