Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Bash脚本循环分析_Linux_Bash_Shell_Command Line_Scripting - Fatal编程技术网

Linux Bash脚本循环分析

Linux Bash脚本循环分析,linux,bash,shell,command-line,scripting,Linux,Bash,Shell,Command Line,Scripting,我必须对这个bash脚本做些什么才能让它重复“输入学生姓名以获得分数”,并在要求用户再次输入姓名时在用户输入空格时停止?目前,它接受名称并只返回一次分数。我尝试使用while循环来重复“while continue=0”过程。我知道这很简单,我只是被卡住了 这是我的密码 continue=0 while [[ continue -eq 0 ]]; do echo " "

我必须对这个bash脚本做些什么才能让它重复“输入学生姓名以获得分数”,并在要求用户再次输入姓名时在用户输入空格时停止?目前,它接受名称并只返回一次分数。我尝试使用while循环来重复“while continue=0”过程。我知道这很简单,我只是被卡住了

这是我的密码

continue=0
while [[ continue -eq 0 ]]; do
            echo " "                                                                                                                
            echo "Enter a student's name to get their score: "
            read sName
            echo "Searching for $sName's score"
            length=${#names[@]}
            start=0
            end=$((length -1))
            while [[ $start -le $end ]]; do
                    mid=$((start + ((end - start)/2)))
                    midName=${names[mid]}
            if [[ $midName > $sName ]]; then
                    end=$((end-mid-1))
            elif [[ $midName < $sName ]]; then
                    start=$((mid+1))
            else
                    echo "${scores[$mid]}"
                    exit 0
            fi
    done
done
continue=0
而[[继续-等式0]];做
回声“”
echo“输入学生姓名以获得分数:”
读斯奈姆
echo“搜索$sName的分数”
长度=${#名称[@]}
开始=0
结束=$((长度-1))
而[[$start-le$end]];做
mid=$((开始+((结束-开始)/2)))
midName=${names[mid]}
如果[[$midName>$sName]];然后
end=$((end-mid-1))
elif[$midName<$sName]];然后
开始=$((中间+1))
其他的
回显“${scores[$mid]}”
出口0
fi
完成
完成

以下是一个简化的示例,说明如何实现您的目标:

#!/bin/bash

while :
do
   echo "Enter a student's name to get their score: "
   read name

   if [[ -z $name ]]
   then
      break
   fi

   # got name, continue processing

done

在哪里更改
$continue
退出0
将退出整个脚本。也许您希望
中断
而不是不评估原始代码其余部分的正确性,我认为一个问题是
while
表达式中
$continue
上缺少的
$