#!/bin/bash
while [ 1 ]
do
read -s -n 1 key
echo -n $key && echo -n $key >> log
done
我将此shell保存为run.sh并使用“./run.sh”运行它 如果我很快输入字符,控制台上的字符串 有时与日志文件中的字符串不同。
./run.sh
dhassudhasfuadhasfuash
ctrl+c
cat log
dhasudhasfuadhasfuash
如何解释这个?
答案 0 :(得分:0)
奇怪,但听起来你是在遇到一种竞争条件,你已经在循环之前写入了stdin,因为有机会回到阅读命令。
如果在没有静音选项的情况下尝试脚本,那么您可以看到正在读取字符的位置......
read -p " reading:" -n 1 key
我确定你会得到类似的东西 阅读:dd阅读:......阅读:aa阅读:sss阅读:....