我的剧本中有这两行:
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
然而,变量扩展并不像我预期的那样有效。
答案 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