Linux 如果使用elif,则使用大型支票

Linux 如果使用elif,则使用大型支票,linux,bash,sh,Linux,Bash,Sh,我正在写一个脚本,将自动与MySQL一起工作。我不明白如何实施这一点: MYSQL_RESULT=mysql -u LOGIN -pPASS -D "TABLE_NAME" -e "SQL request"; for i in $MYSQL_RESULT; do if [ $i -le 100 ] then r_kills = '100'; elif [ $i -le 500 ] then r_kills = '100'; elif [

我正在写一个脚本,将自动与MySQL一起工作。我不明白如何实施这一点:

MYSQL_RESULT=mysql -u LOGIN -pPASS -D "TABLE_NAME" -e "SQL request";
for i in $MYSQL_RESULT; do
    if [ $i -le 100 ]
        then r_kills = '100';

    elif [ $i -le 500 ]
        then r_kills = '100';

    elif [ $i -le 1000 ]
        then r_kills = '500';

    echo $r_kills;
    fi
done;

这是一个无效的赋值。与我所知道的大多数编程语言相比,shell中的等号前后可能没有空格:

if [ $i -le 100 ]
        then r_kills = '100';

if [ $i -le 100 ]
        then r_kills=100;
请注意,在shell中也没有区分数字和文本的方法。单引号和双引号仅用于屏蔽特殊字符,包括空格

信息

sh: 21: cron.rankme.sh: r_kills: not found
误导我去想,你使用了一些不在路径中的东西,但实际上,标记器已经决定,r_kills='100'是对r_kills的程序调用,有两个参数,'='和'100'

第一行-不太了解mysql

MYSQL_RESULT=mysql -u LOGIN -pPASS -D "TABLE_NAME" -e "SQL request";
很可能是这样

MYSQL_RESULT=$(mysql -u LOGIN -pPASS -D "TABLE_NAME" -e "SQL request";)


创建数组,因为您尝试迭代变量

预期结果和实际结果是什么?@vladefect这并不能解释与问题相关的任何内容。@vladefect你在每次elif检查中不需要fi,最后只需要它。你的代码中有两次“=100”,应该是=100,而一个-le100是另一个-le500的子类。这没有多大意义。除了for行中的分号之外,所有分号都是无用的,应该删除。root@linux:~yash cron.rankme.sh[:'kills'不是有效的整数
MYSQL_RESULT=$(mysql -u LOGIN -pPASS -D "TABLE_NAME" -e "SQL request";)
MYSQL_RESULT=($(mysql -u LOGIN -pPASS -D "TABLE_NAME" -e "SQL request";))