我有一个行为不端的脚本,我不知道为什么。
#!/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循环开头的read中返回一行。显然它目前没有这样做。我知道我在if
声明中所犯的错误,并且正在寻求帮助接受单个用户按键,然后echo
来自"$REPLY"
的一行。任何帮助表示赞赏。
答案 0 :(得分:0)
if
中bash
的语法是:
if command line
then
commands
fi
因为您没有在括号内放置空格,以防$inp
为"a"
,所以if
执行的命令为[a
,这不是已知的内置,也不是您系统上的可执行文件。当您编写if [ "$inp" = "a" ]
时,执行的命令行为[ a = a
;命令[
与test
相同,如果参数中的测试值为true,则返回0
(真,非错误)。见man [
; bash
内部[
的行为与/bin/[
相同。
这涵盖了错误本身;但是达到你既定目标的逻辑仍然是错误的(如果你想要回答的话,可以使用一些澄清:你如何区分一个关键意味着从你想要展示的那一行进展?如果我理解的那么正确。)