bash - 如何在不调用 bash 的情况下从标准输入读取单个字符?
问题描述
我正在尝试从 shell 脚本(不是 bash 脚本)中的标准输入读取单个字符。
我有一个包含以下行的脚本:
#!/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 后返回/退出。
复制
这个问题的答案适用于我的问题。
这可能不是完全重复的,因为:
- 这个问题只与ksh有关。
- 投票最多的答案只是重复我的问题:“如何用 bash 来做”
解决方案
推荐阅读
- c - 为什么我在 C 中的电子邮件检查器不起作用?(我使用 ispunct 来检测电子邮件上是否有 @,但它似乎不起作用)
- python - 仅在第一个 epoch 验证损失为零
- magnolia - 如何在标准 magnolia 5.7 表单上预填充输入/隐藏字段
- r - 运行应用程序时出现闪亮错误:match.arg(position) 中的错误:'arg' 必须为 NULL 或字符向量
- r - 如何提高 Rstudio 中导出的 ggsurvplot 图像的分辨率
- sql - 取最后一个变化值
- javascript - Node.js 将 Buffer 转换为对象/函数
- oracle - 比较 oracle apex 中的时间戳时,调用“<=”时参数的数量或类型错误
- google-apps-script - 在两个不同的函数中使用两个子字符串时,“TypeError:无法读取未定义的属性‘子字符串’”
- javascript - 使用 Flexbox 将内联 ul 彼此相邻包装