我的脚本行为不当,我不知为什么。
#!/bin/bash
while read -r;do
read -rsn1 inp
if ["$inp" = "a"]; then
echo "$REPLY"
fi
done
这将返回:
./some.sh: line 4: [a: command not found
该脚本的目的是在每次按下任何键时从while循环开始处的读取返回一行。显然,它目前不这样做。我知道我在if
陈述中所犯的错误,并且正在寻求帮助,请接受单个用户的按键操作,然后echo
从中键入一行"$REPLY"
。任何帮助表示赞赏。
if
in的语法bash
是:
if command line
then
commands
fi
因为你没有把在太空中括号内,万一你的$inp
就是"a"
,命令if
执行的[a
,这不是一个已知的内置,也不是你有一个可执行文件在系统上。当您编写时if [ "$inp" = "a" ]
,执行的命令行为[ a = a
:如果参数中的测试评估为true [
,则与相同的命令test
将返回0
(true,非错误)。见man [
; 和bash
内部[
的行为相同/bin/[
。
这涵盖了错误本身;但是达到您设定的目标的逻辑仍然是错误的(如果您也想得到答案,这可能需要一些澄清:如果我正确地理解了,该如何区分要升级的键与要显示的行呢?)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句