Я пытаюсь заменить некоторые байты в двоичном файле, используя это довольно длинное выражение
objdump --show-raw-insn -d libc-2.30.so | grep -w movdqa | awk '{print substr($1, 1, length($1)-1)}' | xargs -I {} sh -c "printf '\xf3' | dd of=$mybinary bs=1 seek=$((0x{})) count=1 conv=notrunc;"
В этом выражении $((0x{}))
оценивается оболочкой до того, как xargs заменит {}
шестнадцатеричным значением байта, который нужно перезаписать. $((0x{}))
заменяет шестнадцатеричное значение десятичным, например, 0xF на 16.
-bash: 0x{}: syntax error: invalid arithmetic operator (error token is "{}")
Как я могу заставить xargs выполнить замену до того, как bash попытается раскрыть $((0x{}))
?