如果按 L 键,该行将向左移动。如果按 R 键,该行将向右移动。
我设法做到了:
#!/bin/bash
b=" * "
while :
do
echo "$b"
read -s input
if [ $input==s ]
then
echo "${b:1}"
else
if [ $input==d ]
then
echo " $b"
fi
fi
sleep 1
done
但我不知道如何在不插入“读取”和阻止循环的情况下进行输入控制。
答案 0 :(得分:1)
如果你无论如何都要睡一秒钟,你也可以使用read
的超时选项。
这将最多读取一秒钟的输入:
read -t 1 input
当read
的返回值高于128时,已达到超时。如果它更低,你必须等待。
if (( $? <= 128 )); then sleep 1; fi
顺便说一句:这会在屏幕中间打印一颗星星:
printf "%*s\n" $((COLUMNS / 2)) \*
COLUMNS
是一个变量,包含屏幕宽度。 s
格式选项前面的数字表示字符串应该用那么多空格对齐。如果您指定一个星号而不是一个数字printf
,则从命令行中读取宽度。