簡體   English   中英

Shell腳本:awk無法正確打印局部變量

[英]Shell Scripting: awk not printing local variables correctly

我正在為簡單的bigdata測試准備數據。 下面是我的代碼。

#!/bin/bash
year_start=1900
year_end=2014
for(( year=$year_start; $year <= $year_end; year=`expr $year + 1` ))
do
    for(( d=1; $d < 365; d=`expr $d + 1` ))
    do
        random=$RANDOM
        echo $year|awk '{printf("%d%0.5d\n", $0,$random )}'
    done
done

但是awk正在打印以下內容,而不是Year +一些隨機數

190001900
190001900
190001900
190001900
190001900
190001900
190001900
190001900

有什么幫助嗎?

您不能在awk中使用shell變量

使用-v將值傳遞給awk變量

awk -v random=$random '{printf("%d%0.5d\n", $0,random )}'
  • -v random=$random一個awk變量random並將其集合傳遞給shell變量$random的值

測試

$ cat test
#!/bin/bash
year_start=1900
year_end=2014
for(( year=$year_start; $year <= $year_end; year=`expr $year + 1` ))
do
    for(( d=1; $d < 365; d=`expr $d + 1` ))
    do
        random=$RANDOM
        echo $year| awk -v random=$random '{printf("%d%0.5d\n", $0,random )}'

    done
done
$ bash test
190015628
190029371
190027290
190011319
190027379
190014108
190006841
190001113
190032492
190030980
190000745
190011316
190005771
190015510
190023285
190021061
190026820
^C

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM