#!/bin/bash
while echo -n "Player's name?"
read name
[ $name != 'ZZZ' ]
do
searchresult=$(grep [$name] playername)
if [ $searchresult=0 ]
then
echo -n "if See target (T/t) or team name (M/m)?"
read team
read target
while [ [ $target!=T ] || [ $team!=M ] ]
do
echo "Please enter only T or M."
done
if $target=T
then
grep [ $name ] targetselected
else
grep [ $name ] teamselected
fi
else
echo 'no such player'
fi
done
echo You are now exited search
错误消息第10行:[:参数太多,这是什么意思
不确定你指向的是发布代码中的哪一行10,但我发现你发布的代码作为几乎没有问题
线路while [ [ $target!=T ] || [ $team!=M ] ]
应该是
while [ $target!="T" ] || [ $team!="M" ]
此外,if $target=T
应相应地为if $target="T"
两行:
searchresult=$(grep [$name] playername)
if [ $searchresult=0 ]
是非常错误的。如果您试图确定grep
是否成功,最好执行以下操作:
if grep -q "$name" playername; then ...
将grep放入$()
并分配给searchresult可以比较grep
的输出,而不是检查其退出状态。第二行中=
周围缺少的空格是非常错误的。假设searchresult
是一个不包含空格且仅包含字母数字字符的字符串,则由于字符串"$searchresult=0"始终为非空,因此行if [ $searchresult=0 ]
的计算结果将始终为true。(如果searchresult是空字符串,则$searchresult=0
是非空字符串=0
,因此测试成功。)您不太可能打算测试该字符串是否为空。您看到的确切错误表明grep
正在为包含空白的searchresult
赋值。在这种情况下,[ $searchresult=0 ]
($searchresult
周围没有双引号)被[
解析为多个参数(在$searchresult
中的空白处拆分),错误告诉您参数太多。