![](/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.