Bash脚本:变量没有正确递增

时间:2016-09-10 03:11:21

标签: bash variables scripting increment

我正在编写一个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

2 个答案:

答案 0 :(得分:0)

你做错了两件事。首先,要回答你的问题,

(($i+1))

应该是

(($i+=1)) 

另外,你应该删除行

中的空格
i = 0 

所以它看起来像

i=0

答案 1 :(得分:0)

首先,您可能希望在mv命令中引用目录名称,否则会遇到包含空格的名称的问题:

mv "$d" "${Unix[i]}"

如您所见,没有必要在i的索引中添加$,因为[]是"算术上下文"在这里扩展变量名称。

其次,您的增量不执行任何操作:您只需向i添加1并将结果抛弃。您可以改为使用增量运算符:

(( ++i ))

同样,不需要$