在bash

时间:2016-04-23 15:21:57

标签: bash variables output

我的剧本中有这两行:

a=2;for i in {c..k};do let a+=1; export disk${a}_device=/dev/sd$i;done

for i in {3..11}; do sudo dd if=/dev/zero of=$(echo $[disk${i}_device]) bs=512 count=1;done

我的问题是echo $ [disk $ {i} _device]替换为null,因此: dd if = / dev / zero of = bs = 512 count = 1

我想要达到的目的是:

export disk3_device=/dev/sdc

export disk4_device=/dev/sdd

export disk5_device=/dev/sde

.....

然后

sudo dd if=/dev/zero of=/dev/sdc bs=512 count=1

sudo dd if=/dev/zero of=/dev/sdd bs=512 count=1

sudo dd if=/dev/zero of=/dev/sde bs=512 count=1

..... e.t.c

然而,变量扩展并不像我预期的那样有效。

1 个答案:

答案 0 :(得分:0)

最快的解决方法是改变这个:

$(echo $[disk${i}_device])

到此:

$(eval echo \$disk${i}_device)

但是,如果您希望对它有一点乐趣,请执行此操作以创建命令:

find /dev/sd[c-k] -printf "dd if=/dev/zero of=%p bs=512 count=1\n"

看起来不错?然后执行!

find /dev/sd[c-k] -printf "dd if=/dev/zero of=%p bs=512 count=1\n" | sudo sh