#!/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
答案 0 :(得分:0)
不确定您指向的已发布代码中的哪一行,但我发现您发布的代码存在一些问题
行while [ [ $target!=T ] || [ $team!=M ] ]
应为
while [ $target!="T" ] || [ $team!="M" ]
此外,if $target=T
因此应为if $target="T"
答案 1 :(得分:0)
这两行:
searchresult=$(grep [$name] playername)
if [ $searchresult=0 ]
非常错误。如果您要确定grep
是否成功,最好这样做:
if grep -q "$name" playername; then ...
将grep放入$()
并分配给searchresult,您要比较grep
的输出,而不是检查其退出状态。并且第二行=
周围缺少的空格非常错误。假设searchresult
是一个不包含空格且只包含字母数字字符的字符串,则行if [ $searchresult=0 ]
将始终求值为true,因为字符串“$ searchresult = 0”始终为非空。 (如果searchresult是空字符串,那么$searchresult=0
是非空的字符串=0
,因此测试成功。)您打算测试该字符串是否为空是不太可能的。您看到的确切错误表明grep
正在为包含空格的searchresult
分配值。在这种情况下,[ $searchresult=0 ]
($searchresult
周围没有双引号)被[
解析为多个参数(在$searchresult
中的空格上拆分),错误告诉你有太多的争论。