外壳脚本:awk 无法正确打印局部变量



我正在为一个简单的大数据测试准备数据。下面是我的代码。

#!/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.5dn", $0,$random )}'
    done
done

但是awk打印的是以下内容而不是年份+一些随机数

190001900
190001900
190001900
190001900
190001900
190001900
190001900
190001900

有什么帮助吗?

你不能在awk中使用shell变量

使用 -v 将值传递给 awk 变量 as

awk -v random=$random '{printf("%d%0.5dn", $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.5dn", $0,random )}'
    done
done
$ bash test
190015628
190029371
190027290
190011319
190027379
190014108
190006841
190001113
190032492
190030980
190000745
190011316
190005771
190015510
190023285
190021061
190026820
^C

最新更新