我正在Bourne Shell Script中构建一个学生数据库,这实际上是我第一次看到这样编写的代码,所以我非常偏离我的元素。我需要这样做,以便当用户输入课程时,程序检查用户输入与我已经拥有的课程数据库,如果课程不存在,则提示用户输入新课程。这就是我正在尝试的:
echo "course-1: \c"
read course1
while [[ grep -i "$course1" course3.dat == 1]]
do
echo "course does not exist"
echo "course-1: \c"
read course1
done
echo "course-2: \c"
read course2
while [[ grep -i "$course2" course3.dat == 1]]
do
echo "course does not exist"
echo "course-2: \c"
read course2
done
但我得到的错误是“条件二元运算符预期”和“-i”附近的“语法错误”。我一直试图谷歌的答案,但我没有提出任何有用的东西。所以我想知道你们有没有人能帮助我?非常感谢。
答案 0 :(得分:2)
[[
是/bin/test
的快捷方式,不是您想要的。 (这是关于它的man page。)
请改为尝试:
while ! grep -i "$course1" course3.dat
或者
until grep -i "$course1" course3.dat
当grep成功(即匹配行)时,grep
表达式的计算结果为true,并且!颠倒那个。直到从而构建了相反的语义。
答案 1 :(得分:1)
[[
和[
为“test”, 是您想要的。
但是,不同的shell具有不同的语法; ksh或bash会解释“[[”没关系,但Bourne shell(通常是/ bin / sh)不会。