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