这是出于学习目的。我写了一个模拟打字的脚本。
用法是:
$ typewriter (insert some text here)
然后脚本会以随机的方式回显它,看起来像是在打字。很好,但问题是,如果输入包含分号(;)则会中断。
例如:
$ typewriter hello; world
我想这是一个简单的修复。我只是想不出来。
提前致谢!
CODE:
#!/bin/bash
#Displays input as if someone were typing it
RANGE=4
the_input=$*
if [ x$* = "x" ] || [ x$* = "xusage" ] || [ x$* = "xhelp" ] || [ x$* = "x--help" ];
then
echo "Usage: typewriter <some text that you want to look like it's typed>"
exit 1
fi
while [ -n "$the_input" ]
do
number=$RANDOM
let "number %= RANGE"
printf "%c" "$the_input"
sleep .$number
the_input=${the_input#?}
done
printf "\n"
答案 0 :(得分:5)
不是真的:;
表示命令的结束。管道和输入/输出重定向(|
,<
,>
),具有意义的符号,你会遇到类似的问题。
唯一的选择是将参数放在引号中。
typewriter "some; text<>| that should be displayed"
答案 1 :(得分:2)
您还可以修改脚本以从stdin中读取:
the_input=`cat`
cat命令会将来自用户的所有输入分配给the_input,直到输入^ D.
优点是用户可以键入多行和间距 该行内将被保留。
整洁的脚本!