如何在不调用bash的情况下从stdin中读取单个字符?

时间:2018-12-22 06:34:51

标签: bash shell posix stdin dd

我正在尝试从shell脚本(而不是bash脚本)中的stdin读取单个字符。

我有一个包含以下内容的脚本:

#!/bin/sh

…

char=$(/bin/bash -c 'read -s -n1 key; echo "$key"')

…

这行得通(假设已安装bash),但是拥有该行代码有点不对。

是否有更好的便携式方法?


它应该可以跨平台运行,但是即使使用我在其上测试过的几个平台(debian,maemo,cygwin,fedora),我也无法找到一种无需安装bash并仅调用bash实例的方法。阅读一个按键。

我也尝试了char="$(dd bs=1 count=1)",但是dd仅在换行符/ EOF之后返回/退出。


重复

question的答案可以解决我的问题。

这可能不是完全相同的重复项,因为:

  1. 该问题仅与ksh有关。
  2. 投票最多的答案只是重复我的问题:“如何使用bash做到这一点”

但是有人问并回答了这个问题,因为exceptedbest答案都是跨平台工作的。我将其命名为“最佳”的答案会更好;)

0 个答案:

没有答案