Bash:在while循环中放入读取

时间:2016-04-30 04:03:02

标签: bash

我有一个行为不端的脚本,我不知道为什么。

#!/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"的一行。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

ifbash的语法是:

if command line
then
  commands
fi

因为您没有在括号内放置空格,以防$inp"a",所以if执行的命令为[a,这不是已知的内置,也不是您系统上的可执行文件。当您编写if [ "$inp" = "a" ]时,执行的命令行为[ a = a;命令[test相同,如果参数中的测试值为true,则返回0(真,非错误)。见man [; bash内部[的行为与/bin/[相同。

这涵盖了错误本身;但是达到你既定目标的逻辑仍然是错误的(如果你想要回答的话,可以使用一些澄清:你如何区分一个关键意味着从你想要展示的那一行进展?如果我理解的那么正确。)