![](/img/trans.png)
[英]How to refer variable value inside for loop along with incrementing variable name in Bash scripting
[英]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.