在 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
我的脚本中有这两行:
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