2016-02-07 116 views
1
Today=$(date) 
for i in {2..15} 
do 
week_{$i}=$(date -d "$Today +$i week") 
echo ${week_2} 
done 

我在BASH中沒有獲得輸出值。動態更改unix中的變量名稱for循環

+0

一個錯誤容易被發現爲 「今日= $日期」,這受讓人變量「date」的值**賦予名爲「Today」的變量。嘗試*今日= $(日期);回聲$今日*開始。 –

+0

我依稀記得for循環打開了一個子shell,並且任何變量都是該子shell的本地變量,* no way *在父shell中設置這些值。 –

+0

* no-way *除了將值放在一個文件(或一個管道??)中並在之後提取它們。 –

回答

1

一種方式...

 
    Today=$(date) 
    for i in {2..15} 
    do 
     tmp=$(date -d "$Today +$i week") 
     eval week_${i}=\$tmp 
     eval echo \$week_${i} 
    done 

方式二...

 
    Today=$(date) 
    for i in {2..15} 
    do 
     week_[$i]=$(date -d "$Today +$i week") 
     echo ${week_[$i]} 
    done 
第三條道路...

Today=$(date) 
    for i in {2..15} 
    do 
     eval echo \${week_${i}:=$(date -d "$Today +$i week")} > /dev/null 
    done 

    for i in {2..15} 
    do 
     eval echo \$week_${i} 
    done 
+0

可否請您解釋一下?我不是什麼新手,但我大部分都是*使用*它。將循環內部的變量賦值傳遞到外部,我無法管理,並且我嘗試了一下。這是一段時間的循環,但我可以「相信」「可能會有很大的不同。 –

+0

這個工程!謝謝 – user5705451

+1

在這個例子中循環後可用的變量。以「第三種方式」參見第二個循環。 –