在 bash 中输出包含其他变量的变量的值

Output the value of variable containing other variable in it in bash

我的脚本中有这两行:

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

然而变量扩展并没有像我预期的那样工作。

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

$(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