繁体   English   中英

Bash脚本:变量未正确递增

[英]Bash scripting: variable is not incrementing correctly

我正在编写一个bash脚本以遍历所有目录并将目录重命名为数组的值,但似乎我的(i th)值未正确递增,并且在出现以下情况时还会显示“未找到(i th)命令”我运行我的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

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

(($i+1))

应该

(($i+=1)) 

另外,您应该删除行中的空格

i = 0 

所以看起来

i=0

首先,您可能想在mv命令中引用目录名称,否则您将遇到包含空格的名称的麻烦:

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

如您所见,没有必要在索引中的i前面加上$ ,因为[]在此处是“算术上下文”并扩展了变量名。

其次,您的增量没有任何作用:您只需将i加1并丢弃结果即可。 您可以改用递增运算符:

(( ++i ))

同样,不需要$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM