簡體   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