Linux `echo`(shell bash)发送整数值,而不仅仅是字符和字符串。可能吗? 问题:
Linux `echo`(shell bash)发送整数值,而不仅仅是字符和字符串。可能吗? 问题:,linux,bash,shell,char,Linux,Bash,Shell,Char,echo-n 1>/dev/LED写入1的ASCII值,即对应于49的字符十进制值。 好的,我可以轻松管理设备驱动程序中的ASCII字符,但问题是: 我可以在Linux中使用shell bash的echo函数发送“无符号整数”吗? 目标是编写十六进制0x01 上下文 我认为这并不重要,但我正在尝试将整数发送到Linux设备驱动程序中的。write函数。要管理ASCII,它和以往一样简单,但我希望内核代码尽可能简单,因为它会影响性能。echo只写字符串;如果希望字符串包含字符0x01,则必须指定该
echo-n 1>/dev/LED
写入1
的ASCII值,即对应于49
的字符十进制值。
好的,我可以轻松管理设备驱动程序中的ASCII字符,但问题是:
我可以在Linux中使用shell bash的echo
函数发送“无符号整数”吗?
目标是编写十六进制0x01
上下文
我认为这并不重要,但我正在尝试将整数发送到Linux设备驱动程序中的
。write
函数。要管理ASCII,它和以往一样简单,但我希望内核代码尽可能简单,因为它会影响性能。echo
只写字符串;如果希望字符串包含字符0x01
,则必须指定该字符。您应该使用printf
,但是:
printf '\x01' > /dev/LED
这将在bash
中工作,但是printf
的其他实现可能不支持十六进制转义。Octal是唯一受支持的标准:
printf '\001' > /dev/LED
echo
只写字符串;如果希望字符串包含字符0x01
,则必须指定该字符。您应该使用printf
,但是:
printf '\x01' > /dev/LED
这将在bash
中工作,但是printf
的其他实现可能不支持十六进制转义。Octal是唯一受支持的标准:
printf '\001' > /dev/LED
-e
选项告诉echo
解释转义序列,-n
告诉它忽略尾随的新行
-e
选项告诉echo
解释转义序列,而-n
告诉它忽略尾随的新行。echo
对于作业是错误的工具--请参阅的应用程序使用部分以获取上下文。echo
对于作业是错误的工具--请参阅的应用程序使用部分以获取上下文。echo-e
不可移植--任何版本的echo
都不可移植当输出时,除了打印-e
以外的任何内容都违反了相关POSIX标准;bash的echo
有时只会违反该标准——如果xpg_echo
和posix
运行时标志都处于活动状态,则其行为是兼容的,因此该代码无法工作。是的,我使用了-n,因为我看到它试图编写新行字符!(-e
是“主动违反”,与扩展相反,因为它违反了规范中的黑白语言“实现不支持任何选项”;-n
是唯一的例外,因为它被定义为使echo
的行为在出现时未被标准定义——但在程序中使用未定义的行为也不是一件好事).echo-e
是不可移植的——任何版本的echo
在输出时除了打印-e
外,其他任何功能都会违反相关POSIX标准;bash的echo
有时只会违反该标准——如果xpg_echo
和posix
运行时标志都处于活动状态,则其行为是兼容的,因此该代码无法工作。是的,我使用了-n,因为我看到它试图编写新行字符!(-e
是“主动违反”,与扩展相反,因为它违反了规范中的黑白语言“实现不支持任何选项”;-n
是唯一的例外,因为它被定义为使echo
的行为在出现时未被标准定义——但在程序中使用未定义的行为也不是一件好事)。