2

次の出力を見て、dd で作成したディスク消去ユーティリティをテストしようとしています。

00000000
*
00000200

現在、シェル スクリプトで短いサンプル ループを作成して、出力を反復処理し、出力を確認するためだけに出力しています。

dd if=/dev/zero of=sample bs=4M count=1
results=`dd if=sample bs=512 count=1 | hexdump -C | awk '{ print $1 } '`
for i in $results
do
   echo -e "$i"
done

*ただし、「 」文字にヒットすると、ディレクトリのリストが出力されます。エスケープしようとすると、「$i」が出力されます。次の if-else コンストラクトを使用しても、役に立たないようです。

if [ "$i" == "\*" ] #using "*" didn't seem to work either
then
    echo -e "\*"
else
    echo -e "$i"
fi

私がどこで間違っているのかについてのアイデアはありますか?

4

4 に答える 4

1

$results変数を作成して for ループにリストする必要はありません。

awk 自体を使用して出力を一覧表示できます。

dd if=sample bs=512 count=1 2>/dev/null | hexdump -C | awk '{ print $1 }'
于 2013-07-24T21:29:24.413 に答える
1

または、「箱の外で考える」、

別の文字を使用するだけですか?#?

IHTH

于 2013-07-24T21:37:55.180 に答える
1

正確な内容が必要な場合は、一重引用符で囲みます

$ echo '*'

ここでbashでの引用について少し読んでください:http://tldp.org/LDP/abs/html/quoting.html

于 2013-07-24T21:14:51.827 に答える