2016-04-23 11 views
2

bashで、その中に他の変数を含む変数の値:出力、私は私のスクリプトで次の2行だ

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

私の問題があるが、そのエコー$ [ディスク$ {I} _device]代替は、このようにヌルとします DDの場合= = BSのは/ dev /ゼロ= 512数= 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

修正プログラムは、この変更することである最短:あなたはそれを少し楽しみたい場合は、コマンドを作成し、これを行う、しかし

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

:これまで

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

驚くばかり!ありがとうWebb!私は\ $$ "構造をかなり得ていませんでしたが、私にとって重要なのはそれが働いていることです:) – Joro

+0

そのいくつかは必要ではなく、私は答えを簡略化しました。私の理解は' echo \ $ disk $例えば、 '$ disk3_device'という文字列を生成し、'/dev/sdc'を生成して評価します。 – webb

+0

もう一度おねがいします。/sd [ck] -exec sudo dd if = /} bs = 512 count = 1 \; ' – Joro

関連する問題