我的unix脚本出了什么问题


#!/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中的空白处拆分),错误告诉您参数太多。

相关内容

  • 没有找到相关文章

最新更新