为什么在Linux shell中跳过某些命令?

时间:2016-10-09 08:42:15

标签: shell

#!/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

如何解释这个?

1 个答案:

答案 0 :(得分:0)

奇怪,但听起来你是在遇到一种竞争条件,你已经在循环之前写入了stdin,因为有机会回到阅读命令。

如果在没有静音选项的情况下尝试脚本,那么您可以看到正在读取字符的位置......

read -p " reading:" -n 1 key

我确定你会得到类似的东西  阅读:dd阅读:......阅读:aa阅读:sss阅读:....