我有一个文件values
,其中包含一个十六进制字符串。
\x41\x42\x43\x44\x45
我可以使用例如printf
:
printf $(cat values)
-----------输出---------> ABCDE
这在终端上完美运行,但它在脚本中不起作用:
#!/bin/sh
printf $(cat values)
结果:
$ ./script.sh
\x41\x42\x43\x44\x45
我想知道为什么它不起作用以及如何解决它。
答案 0 :(得分:1)
它不起作用,因为bash中使用的printf
与sh中的不同。要快速解决问题,只需将#!/bin/sh
替换为#!/bin/bash
即可。只要您不关心完全符合/bin/sh
,这可能是一个简单的解决方案。
但是,如果您真的想使用sh
解释器,请使用类似:
/bin/echo -e "\x40"
答案 1 :(得分:0)
您是否尝试使用#!/ bin / bash而不是#!/ bin / sh?我无法从你的问题中说出来,但它看起来好像你不需要使用sh而不是bash。